我在elasticsearch文档(6.8)中看到了关于span查询的部分,
请求和结果类似于一些术语级查询,但它提到的范围是“低级位置”的,闻起来像是更好的偏好(可能我错了)。
问题是,如果我想使用纯术语查询(例如,用名称匹配用户),在性能上有很大的差异,或者在其他方面,我更喜欢一个选项对另一个选项?
示例:
GET /_search
{
"query": {
"span_term" : { "user" : "kimchy" }
}
}
与
POST _search
{
"query": {
"term" : { "user" : "kimchy" }
}
}
1条答案
按热度按时间hlswsv351#
如果您只想用一个精确的值来匹配一个字段,那么
term
查询是你要找的。span查询涉及的内容要多得多(而且是低级的),它处理术语的位置匹配。
span_term
是更复杂的span查询的基本构建块之一,例如span_near
,span_within
,等等。您可以在以下网址找到一篇演示span查询功能和复杂性的有趣文章:https://lucidworks.com/post/the-spanquery/如果您有兴趣根据术语的相对位置查找匹配项,那么您应该选择
intervals
查询,为邻近匹配提供更高级别的dsl。但底线是,如果你只想匹配
user: kimchy
,那就去傻笑吧term
查询。