Elasticsearch 7.3 Text字段排序与Scroll分批查询如何结合应用?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1301个文字,预计阅读时间需要6分钟。
1、Text字段排序+场景:数据库中按某个Text字段排序,SQL只需写order by字段名即可,如对某个text field进行排序,es中无法排序。因为文档入队时,分词存储,es无法知道此字段的排序。
1、Text字段排序场景:数据库中按照某个字段排序,sql只需写order by 字段名即可,如果es对一个text field进行排序,es中无法排序。因为文档入倒排索引表时,分词存入,es无法知道此字段的真实值。这样的结果往往不准确,因为分词后是多个单词,再排序就不是我们想要的结果了。
通常有两种解决办法:
- 将一个text field建立两次索引,一个分词,用来进行搜索;一个不分词,用来进行排序。
- mapping时设置
fielddata:true,按照第一个分词进行字典序排序。这种方式也不是很准确,因为只是按照第一个分词进行排序,后续的分词不会参与排序。
本文共计1301个文字,预计阅读时间需要6分钟。
1、Text字段排序+场景:数据库中按某个Text字段排序,SQL只需写order by字段名即可,如对某个text field进行排序,es中无法排序。因为文档入队时,分词存储,es无法知道此字段的排序。
1、Text字段排序场景:数据库中按照某个字段排序,sql只需写order by 字段名即可,如果es对一个text field进行排序,es中无法排序。因为文档入倒排索引表时,分词存入,es无法知道此字段的真实值。这样的结果往往不准确,因为分词后是多个单词,再排序就不是我们想要的结果了。
通常有两种解决办法:
- 将一个text field建立两次索引,一个分词,用来进行搜索;一个不分词,用来进行排序。
- mapping时设置
fielddata:true,按照第一个分词进行字典序排序。这种方式也不是很准确,因为只是按照第一个分词进行排序,后续的分词不会参与排序。

