Elasticsearch之settings和mapping的意義(二)

二、ES中的mapping
ES的mapping如何用?什么時候需要手動,什么時候需要自動?
Mapping,就是對索引庫中索引的字段名稱及其數(shù)據(jù)類型進行定義,類似于mysql中的表結(jié)構(gòu)信息。不過es的mapping比數(shù)據(jù)庫靈活很多,它可以動態(tài)識別字段。
一般不需要指定mapping都可以,因為es會自動根據(jù)數(shù)據(jù)格式識別它的類型,如果你需要對某些字段添加特殊屬性(如:定義使用其它分詞器、是否分詞、是否存儲等),就必須手動添加mapping。

我們在es中添加索引數(shù)據(jù)時不需要指定數(shù)據(jù)類型,es中有自動影射機制,字符串映射為string,數(shù)字映射為long。通過mapping可以指定數(shù)據(jù)類型是否存儲等屬性。

查詢索引庫的mapping信息

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

mapping修改字段相關(guān)屬性
例如:字段類型,使用哪種分詞工具等,如下:
注意:下面可以使用indexAnalyzer定義分詞器,也可以使用index_analyzer定義分詞器
操作不存在的索引:

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

操作已存在的索引:

curl -XPOST http://localhost:9200/zhouls/emp/_mapping -d'{"properties":{"name":{"type":"string","analyzer": "ik_max_word"}}}'
返回的結(jié)果:
{"acknowledged":true}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容