【问题标题】:What the difference between span term query to term query?跨度术语查询与术语查询有什么区别?
【发布时间】:2020-10-12 19:16:38
【问题描述】:

我在 Elasticsearch 文档 (6.8) 中看到了有关跨度查询的部分,
请求和结果类似于某些术语级别的查询,但它提到跨度是“低级位置”,闻起来像是更好的偏好(也许我错了)。
问题是如果我想使用纯术语查询(例如 ma​​tch the user with the name), 在性能或其他方面有很大差异,我更喜欢一个选项吗?


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

VS

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

【问题讨论】:

    标签: elasticsearch elasticsearch-query


    【解决方案1】:

    如果您只对通过精确值匹配字段感兴趣,那么term 查询就是您要查找的查询。

    Span 查询涉及更多(和低级别)并处理术语的位置匹配。 span_term 是更复杂跨度查询的基本构建块之一,例如span_nearspan_within 等。您可以在以下位置找到一篇有趣的文章,展示跨度查询的强大功能和复杂性:https://lucidworks.com/post/the-spanquery/

    如果您有兴趣根据术语的相对位置查找匹配项,那么您应该转而使用intervals query,它为邻近匹配提供了更高级别的 DSL。

    但底线是,如果您只想匹配 user: kimchy,那么请使用更简单的 term 查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-06
      • 1970-01-01
      • 2016-05-15
      • 2017-06-12
      • 2012-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多