Elasticsearch 一个 field 两个索引
发布于: 2021 年 02 月 25 日

内容来自 B 站中华石杉 Elasticsearch 顶尖高手系列课程核心知识篇
如果对一个 string field 进行排序,结果往往不准确,因为分词后是多个单词,再排序就不是我们想要的结果了
通常解决方案是,将一个 string field 建立两次索引,一个分词,用来进行搜索;一个不分词,用来进行排序
PUT /website { "mappings": { "article": { "properties": { "title": { "type": "text", "fields": { "raw": { "type": "string", "index": "not_analyzed" } }, "fielddata": true }, "content": { "type": "text" }, "post_date": { "type": "date" }, "author_id": { "type": "long" } } } }}
PUT /website/article/1{ "title": "first article", "content": "this is my second article", "post_date": "2017-01-01", "author_id": 110}
{ "took": 2, "timed_out": false, "_shards": { "total": 5, "successful": 5, "failed": 0 }, "hits": { "total": 3, "max_score": 1, "hits": [ { "_index": "website", "_type": "article", "_id": "2", "_score": 1, "_source": { "title": "first article", "content": "this is my first article", "post_date": "2017-02-01", "author_id": 110 } }, { "_index": "website", "_type": "article", "_id": "1", "_score": 1, "_source": { "title": "second article", "content": "this is my second article", "post_date": "2017-01-01", "author_id": 110 } }, { "_index": "website", "_type": "article", "_id": "3", "_score": 1, "_source": { "title": "third article", "content": "this is my third article", "post_date": "2017-03-01", "author_id": 110 } } ] }}
GET /website/article/_search{ "query": { "match_all": {} }, "sort": [ { "title.raw": { "order": "desc" } } ]}复制代码
划线
评论
复制
发布于: 2021 年 02 月 25 日阅读数: 19
版权声明: 本文为 InfoQ 作者【escray】的原创文章。
原文链接:【http://xie.infoq.cn/article/83adffd705b78046005454f48】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
escray
关注
Let's Go 2017.11.19 加入
在学 Elasticsearch 的项目经理











评论