首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在elasticsearch中匹配和术语查询的性能?

在elasticsearch中匹配和术语查询的性能?
EN

Stack Overflow用户
提问于 2022-04-12 11:36:03
回答 2查看 851关注 0票数 0

我在我的项目中使用了很多match查询。现在,我刚刚在Elasticsearch中遇到了term查询。如果指定了查询的关键字,那么术语查询似乎会更快一些。现在我有个问题..。我应该重构我的代码(很多)并使用术语而不是匹配吗?使用术语比匹配更好的性能是多少?

在查询中使用术语:

代码语言:javascript
复制
main_query["query"]["bool"]["must"].append({"term":{object[..]:object[...]}})

在查询中使用匹配查询:

代码语言:javascript
复制
main_query["query"]["bool"]["must"].append({"match":{object[..]:object[...]}})
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-12 12:18:41

弹性阻止使用term查询text字段用于明显原因 (分析!!),但如果您知道需要查询keyword字段(而不是分析!!),则肯定会使用term/terms查询而不是match查询,因为match查询除了分析输入之外做了更多的事情,并且最终会执行term查询,因为它注意到被查询的字段是keyword字段。

票数 2
EN

Stack Overflow用户

发布于 2022-04-12 12:28:53

据我所知,当您使用match查询时,它意味着您的字段被映射为"text“,并且使用了分析器。这样,您的索引单词将生成令牌,当您运行查询时,您将通过一个分析器,并对每个标记进行对应。

术语会做精确的匹配,也就是说,它不会经过任何分析器,它会在倒排索引中寻找确切的术语。

正因为如此,我相信通过不通过分析器,术语是更快的。我使用术语匹配搜索关键字,如类别,标签,没有意义的东西使用分析器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71841934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档