主要知识点:
mapping的理解
(1)往es里面直接插入数据,es会自动建立索引,同时建立type以及对应的mapping
(2)mapping中就自动定义了每个field的数据类型。
(3)不同的数据类型(如text和date等),可能有的是exact value,有的是full text
(4)对于exact value,在分词并建立倒排索引的时候,是将整个值一起作为一个关键词建立到倒排索引中的;对于full text,会经过分词、normaliztion等各种各样的处理,之后才会把经过这些处理的词条建立到倒排索引中。
(5)exact value和full text两种不同类型的field就决定了,在一次搜索的时候,对exact value的field或者是full text的field进行搜索的行为也是不一样的,会跟建立倒排索引的行为保持一致;比如说exact value搜索的时候,就是直接按照整个值进行匹配,对于full text是先以相同的分词器对query string进行分词等处理之后,再去倒排索引中去搜索。
(6)可以用es自带的dynamic mapping,让其自动建立mapping,包括自动设置数据类型;也可以提前手动创建index和type的mapping,自己对各个field进行设置,包括数据类型,包括索引行为,包括分词器,等等
综上:mapping,就是index的type的元数据,每个type都有一个自己的mapping,决定了数据类型,建立倒排索引的行为,还有进行搜索的行为。