跨术语查询和术语查询之间有什么区别?

vxqlmq5t  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(1)|浏览(543)

我在elasticsearch文档(6.8)中看到了关于span查询的部分,
请求和结果类似于一些术语级查询,但它提到的范围是“低级位置”的,闻起来像是更好的偏好(可能我错了)。
问题是,如果我想使用纯术语查询(例如,用名称匹配用户),在性能上有很大的差异,或者在其他方面,我更喜欢一个选项对另一个选项?
示例:

GET /_search
{
    "query": {
        "span_term" : { "user" : "kimchy" }
    }
}

POST _search
{
  "query": {
    "term" : { "user" : "kimchy" } 
  }
}
hlswsv35

hlswsv351#

如果您只想用一个精确的值来匹配一个字段,那么 term 查询是你要找的。
span查询涉及的内容要多得多(而且是低级的),它处理术语的位置匹配。 span_term 是更复杂的span查询的基本构建块之一,例如 span_near , span_within ,等等。您可以在以下网址找到一篇演示span查询功能和复杂性的有趣文章:https://lucidworks.com/post/the-spanquery/
如果您有兴趣根据术语的相对位置查找匹配项,那么您应该选择 intervals 查询,为邻近匹配提供更高级别的dsl。
但底线是,如果你只想匹配 user: kimchy ,那就去傻笑吧 term 查询。

相关问题