我在 Elasticsearch 文档 (6.8) 中看到了关于跨度查询的部分,
请求和结果类似于一些术语级别的查询,但它提到跨度是“低级别位置”,闻起来更像是偏好(也许我错了)。
问题是如果我想使用纯术语查询(例如将用户与名称匹配),
我更喜欢一个选项而不是另一个选项的性能或其他方面有很大差异吗?
例子:
GET /_search
{
"query": {
"span_term" : { "user" : "kimchy" }
}
}
对比
POST _search
{
"query": {
"term" : { "user" : "kimchy" }
}
}
最佳答案
如果您只对通过精确值匹配字段感兴趣,那么 term
查询就是您要查找的查询。
跨度查询更加复杂(和低级)并处理术语的位置匹配。 span_term
是更复杂的跨度查询的基本构建 block 之一,例如 span_near
、span_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/