ES

Elasticsearch之settings和mapping的意

2017-12-21  本文已影响198人  lookphp

二、ES中的mapping
ES的mapping如何用?什么时候需要手动,什么时候需要自动?
Mapping,就是对索引库中索引的字段名称及其数据类型进行定义,类似于mysql中的表结构信息。不过es的mapping比数据库灵活很多,它可以动态识别字段。
一般不需要指定mapping都可以,因为es会自动根据数据格式识别它的类型,如果你需要对某些字段添加特殊属性(如:定义使用其它分词器、是否分词、是否存储等),就必须手动添加mapping。

我们在es中添加索引数据时不需要指定数据类型,es中有自动影射机制,字符串映射为string,数字映射为long。通过mapping可以指定数据类型是否存储等属性。

查询索引库的mapping信息

[root@localhost ~]# curl -XGET http://localhost:9200/movies/_mapping?pretty
返回的结果:
{
  "movies" : {
    "mappings" : {
      "movie" : {
        "properties" : {
          "director" : {
            "type" : "string"
          },
          "genres" : {
            "type" : "string"
          },
          "title" : {
            "type" : "string"
          },
          "year" : {
            "type" : "long"
          }
        }
      }
    }
  }
}

mapping修改字段相关属性
例如:字段类型,使用哪种分词工具等,如下:
注意:下面可以使用indexAnalyzer定义分词器,也可以使用index_analyzer定义分词器
操作不存在的索引:

curl -XPUT 'http://localhost:9200/zhouls' -d'{"mappings":{"emp":{"properties":{"name":{"type":"string","analyzer": "ik_max_word"}}}}}'
返回的结果:
{"acknowledged":false}

操作已存在的索引:

curl -XPOST http://localhost:9200/zhouls/emp/_mapping -d'{"properties":{"name":{"type":"string","analyzer": "ik_max_word"}}}'
返回的结果:
{"acknowledged":true}
上一篇 下一篇

猜你喜欢

热点阅读