ElasticSearch - Mapping

2019-08-22  本文已影响0人  辻子路

Mapping

字段的数据类型

什么是Dynamic Mapping

能否更改Mapping的字段类型

修改索引的dynamic值:

PUT movies/_mappings
{
  "dynamic":false
}

如何显示定义一个Mapping

PUT movies
{
    "mappings":{
       // define your mappings here
    }
}

控制当前字段是否被索引

Index Options

image.png

null_value

GET users/_search?q=mobile:NULL
image.png

copy_to 设置

image.png
GET users/_search?q=fullName:(Xu Colin)

多字段类型

image.png

精确值(Exact Values) 和 全文本(Full Text)

自定义分词

当Elasticsearch自带的分词器无法满足时,可以自定义分词器。通过自组合不同的组件实现

Character Filters

在Tokenizer之前对文本进行处理,例如增加删除及替换字符。可以配置多个Character Filters。会影响Tokenizer的position和offset信息
一些自带的Character Filters

Tokenizer

Token Filters

image.png

上面的例子使用了Character Filters去除html标签

image.png

上面是通过mapping把-替换成了_进行分词

image.png

上面是自己创建了个多音字分词器
脚本:

PUT my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_custom_analyzer":{
          "type":"custom",
          "char_filter":[
            "duoyin"
          ],
          "tokenizer":"standard"
        }
      },
      "char_filter": {
         "duoyin":{
           "type":"mapping",
               "mappings":["重 => 重 zhong chong "]
         }
      }
    }
  }
}

POST /my_index/_analyze
{
  "analyzer": "my_custom_analyzer",
  "text":"你很重要"
}
上一篇 下一篇

猜你喜欢

热点阅读