elasticsearch映射及分析-----3

首先我们看下不同的索引方式相同的字段指定字段类型与不指定字段类型es会怎么处理

1、不指定类型,直接创建索引及类型文档

  

  我们看下他默认的索引映射

  

2、创建索引和类型时指定字段类型

   

  这里创建了一个索引为index2类型为manager的索引并指定了数据类型

  查看es的索引方式

  

    这里我们也可以指定索引类型(准确说应该是索引模式)

          

        上图中,索引index3,类型emplyee中age字段的索引模式为not_analyzed,而那么字段为analyzed,其中还有一种我们未使用的,三者有何区别见下图:

          

        具体什么意思呢?

        analyzed表示,如我们有个文档为:Obama is a good man,分析后为全小写的但个单词(term)分析后的内容为:obama,is,a,good,man  (逗号是我加上的,以便于区分,实际分析后的是没有的)。

        not_analyzed表示会被索引,也就是可以被搜索到,但是不会去分析,原文怎么样索引后就是怎么样,所以Obama is a good man这句话不会做任何改变,证据完整的被索引。

        no表示既不索引也不会被分析,我们是搜不到的。

3、分析器

  分析器的作用:

    我们保存一个文档,比如一句话"I have a dream",保存的时候es会采用默认分析器分析这段话,这段话将拆成i,have,a,dream,如果其中有大写会自动转换成小写。

  

    

    token 是一个实际被存储在索引中的词。 position 指明词在原文本中是第几个出现的。 start_offset 和 end_offset 表示词
在原文本中占据的位置(来自es指南)。

4、自定义分析器

    

  这里我们定义hostname字段类型为string,分析器为english.

5、更新映射

  更新映射指的是往索引某类型中添加字段,而不是对某个字段做修改,因为该字段已经有值且已利用之前的分析器做分析,如果修改属性之前的分析结果全部出错,所以不允许对已有字段做索引更新。

  我们之前采用手动映射到方式创建了一个index3的索引employee的类型,name字段没有指定分析器类型,我们现在对这个映射做下修改,指定name字段的分析其为english:,es提示不允许:

  

  我们尝试往索引index3类型employee类型中更新映射新增一个字段tag,这样是允许的(只需添加新字段的映射,索引中原来的字段不需要列出会自动合并):

  

  好了,我们往该索引中添加数据试试:

  

   我们看下这条数据:

        

 6、创建复杂索引(嵌套索引)

        

        这里每一个嵌套层都会被当成一个object对象,然后再指定字段属性。

        

         

  最终数据存储的json结构:

           

原文地址:https://www.cnblogs.com/dbaxyx/p/6323570.html