《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.17.Text analysis, settings 及 mappings——3.4.2.17.1.Multi-field(上) https://developer.aliyun.com/article/1230163
english 分词器。
POST _analyze { "analyzer": "english", "text": "quick brown foxes" }
结果:
{ "tokens" : [ { "token" : "quick", "start_offset" : 0, "end_offset" : 5, "type" : "<ALPHANUM>", "position" : 0 }, { "token" : "brown", "start_offset" : 6, "end_offset" : 11, "type" : "<ALPHANUM>", "position" : 1 }, { "token" : "fox", "start_offset" : 12, "end_offset" : 17, "type" : "<ALPHANUM>", "position" : 2 } ] }
在 english 分词中会将 foxes 解析成 fox,如果使用 quick brown foxes 查询 title.standard,只能返回一个结果,而查询 title.english 则能返回两个结果。
所以为了面对不同分词器导致的不同的分词解析结果,可以一次查询多个分词子字段。
GET test-000002/_search { "query": { "multi_match": { "query": "quick brown foxes", "fields": [ "title.standard", "title.english" ], "type": "most_fields" } } }
当然这种情况下需要评估好使用成本,multi-field 会造成存储成本相应的增加。