12.3.19 fields ——elasticsearch中文文档

来源:互联网 发布:json在线编辑器 编辑:程序博客网 时间:2024/06/06 15:36

12.3.19 fields 原文链接  翻译:AbnerGong

fields

它常常用于索引不同目的不同方式的相同域。这是multi-fields多字段的目的。例如一个字符串域既可以用作分词域来进行全文检索,也可以用作不分词域来进行搜索或聚合。

PUT /my_index{  "mappings": {    "my_type": {      "properties": {        "city": {          "type": "string",          "fields": {            "raw": {   #注释1:city.raw字段是city字段的不分词版本              "type":  "string",              "index": "not_analyzed"            }          }        }      }    }  }}PUT /my_index/my_type/1{  "city": "New York" }PUT /my_index/my_type/2{  "city": "York"   #注释2:分词字段city能用来全文搜索}GET /my_index/_search{  "query": {    "match": {      "city": "york"     }  },  "sort": {    "city.raw": "asc"    #注释3:city.raw字段能用来排序和聚合  },  "aggs": {    "Cities": {      "terms": {        "field": "city.raw"   #注释4:city.raw字段能用来排序和聚合      }    }  }}

【注意】Multi-fields不改变_source字段。
【提示】fields设置允许对相同索引中的同名字段有不同的设置。新的multi-fields能使用[PUT mapping API](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html)添加到已经存在的字段中

用多分词器的多字段(Multi-fields)

另一个多字段(multi-fields)的用画图是分词相同的字段用不同的方式,为了更好的相关。例如我们可以索引一个字段用标准分词器分成单词,也可以再用英语分词器将它们变成词根形式

PUT my_index{  "mappings": {    "my_type": {      "properties": {        "text": {  #注释1``text``字段使用标准分词器          "type": "string",          "fields": {            "english": {   #注释2::``text.english``字段使用``english``分词器              "type":     "string",              "analyzer": "english"            }          }        }      }    }  }}PUT my_index/my_type/1{ "text": "quick brown fox" }   #注释3:检索两个文档,一个用``fox``另一个用``foxes``PUT my_index/my_type/2{ "text": "quick brown foxes" }  #注释4:同注释3GET my_index/_search{  "query": {    "multi_match": {      "query": "quick brown foxes",      "fields": [   #注释5:查询``text````text.english``字段并且组合得分        "text",        "text.english"      ],      "type": "most_fields"   #注释6:同注释5    }  }}

text字段包含了单词fox在第一个文档中,并且在第二个文档中包含了foxestext.english字段包含fox在两个文档中,因为foxes的词干(is stemmed to)是fox

查询字符串也能被text字段的标准分词器分词,并且被text.english字段的英语分词器分词。词干化字段允许foxes的查询也匹配只包含fox的文档。这允许我们匹配尽可能多的文档。通过也查询未词干化的text字段,我们提供精确匹配foxes的文档的相关得分。

0 0
原创粉丝点击