elasticsearch - span term query 和 term query 有什么区别?

标签 elasticsearch elasticsearch-query

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


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

对比

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

最佳答案

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

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

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

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

关于elasticsearch - span term query 和 term query 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64316529/

相关文章:

python - 在Elasticsearch中可能存在或不存在字段的情况下如何搜索

elasticsearch - 查询包含嵌套数组 Elasticsearch 中所有值的文档

elasticsearch - ElasticSearch:日期时间格式的平均聚合

elasticsearch - 存储数 TB 的数据,然后导入到 elasticsearch

elasticsearch - 基于前缀和自定义标记器的Elasticsearch自动建议

elasticsearch - 行类型为_MAP时,从表中选择方解石选择计数(intCol)(elasticsearch示例)

elasticsearch - 具有 group by 和 where 条件的 Elastic Search Sum 聚合

elasticsearch - 如何通过别名通过 _id 请求单个文档?

python - Elasticsearch:时间范围聚合未按预期工作

function - Elasticsearch Nest错误的function_Score JSON生成