ElasticSearch學(xué)習(xí)(一):Mapping的使用

問題

  1. 什么是index mapping?
  2. mapping 有什么用?
  3. 如何設(shè)置mapping?
  4. 如何動(dòng)態(tài)設(shè)置mapping?

1.什么是Index mapping

個(gè)人理解類似于MySQL字段的定義,可以定義是什么類型,但是Es作為一個(gè)索引中間件,肯定支持中文分詞等一些其他特性

官網(wǎng)理解:

官網(wǎng)Mapping解釋

mapping可以定義文檔字段:

- 哪些字符串應(yīng)該被當(dāng)做全文字段
- 這些字段分別是什么類型
- 這些字段是否索引到catch-all字段中
- 可以格式化某些value
- 自定義規(guī)則去mapping 動(dòng)態(tài)添加的字段

官網(wǎng)和我理解不相上下!

2.mapping 有什么用?

ES mapping 就是對(duì)索引中的字段做一些聲明。比如字符串用什么分詞器,索引用不用分詞等約束

3.如何設(shè)置mapping?

創(chuàng)建一個(gè)索引:

curl -XPOST "http://127.0.0.1:9200/test-mapping"
創(chuàng)建索引

假設(shè)索引type為doc,創(chuàng)建mapping:

curl -XPUT http://localhost:9200/test-mapping/doc/_mapping -d '
{
    "doc": {
        "_source": {
            "enabled": true
        },
        "_all": {
            "enabled": false
        },
        "properties": {
            "uuid": {
                "type": "keyword"
            },
            "username": {
                "type": "text"
            },
            "password": {
                "type": "text"
            },
            "device_id": {
                "type": "keyword"
            },
            "user_id": {
                "type": "keyword"
            }
        }
    }
}
'
設(shè)置ES-Mapping

4.如何動(dòng)態(tài)設(shè)置mapping?

比如有多個(gè)index,名字為 teiba_1, tieba_2這樣我們就會(huì)做很多重復(fù)的工作去為每一個(gè)index創(chuàng)建mapping,當(dāng)然ES幫我們想到了這一點(diǎn),可以設(shè)置一個(gè)模板,然后相同類型(正則匹配上)的Index就可以應(yīng)用相同的mapping

curl -XPUT http://localhost:9200/_template/tieba_template -d '
{
    "order": 1,
    "template": "tieba*",
    "mappings": {
      "_default_": {
        "properties": {
          "content": {
            "type": "text",
            "analyzer": "ik_max_word",
            "search_analyzer": "ik_max_word"
          }
        }
      }
    }
}

'
設(shè)置ES-Mapping-Template

創(chuàng)建兩個(gè)index: tieba1 tieba2

curl -XPOST http://localhost:9200/tieba1
curl -XPOST http://localhost:9200/tieba2

然后查看這2個(gè)index的mapping

tieba1-mapping
tieba2-mapping

可以看到這2個(gè)index都成功應(yīng)用了這個(gè)template的mapping

總結(jié)

  • mapping 作用就是定義字段類型,以及分詞器,格式化之類的約束
  • 通過設(shè)置templte可以動(dòng)態(tài)為index設(shè)置mapping

參考

ES官網(wǎng)解釋Mapping

ES查詢語法

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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