gpt4 book ai didi

elasticsearch - 术语查找机制可以通过 id 以外的其他字段查询吗?

转载 作者:行者123 更新时间:2023-11-29 02:53:58 25 4
gpt4 key购买 nike

这里是elasticsearch官网关于terms的: https://www.elastic.co/guide/en/elasticsearch/reference/2.1/query-dsl-terms-query.html

正如我们所看到的,如果我们想要进行术语查找机制查询,我们应该使用这样的命令:

curl -XGET localhost:9200/tweets/_search -d '{
"query" : {
"terms" : {
"user" : {
"index" : "users",
"type" : "user",
"id" : "2",
"path" : "followers"
}
}
}
}'

但是如果我想通过其他领域的用户进行查询怎么办?假设用户有一些其他字段,例如名称,我可以使用术语查找机制通过给用户名称而不是 ID 来查找推文。我试过使用这样的命令:

curl -XGET localhost:9200/tweets/_search -d '{
"query" : {
"terms" : {
"user" : {
"index" : "users",
"type" : "user",
"name" : "Jane",
"path" : "followers"
}
}
}
}'

但它发生错误。期待您的帮助。谢谢!

最佳答案

术语查找机制基本上是一种内置优化,不必进行两次查询来连接两个索引,即一个在索引 A 中获取要查找的 id,另一个在索引 B 中获取具有这些 id 的文档.

与 SQL 相反,这样的 JOIN 只能在 id 字段上工作,因为这是通过 GET 调用从 Elasticsearch 唯一检索文档的唯一方法,这正是 Elasticsearch 会做的在 terms 查找中。

因此,为了回答您的问题,术语查找机制将不适用于 id 字段以外的任何其他字段,因为要检索的第一个文档必须是唯一的。在你的情况下,ES 不知道如何为 name Jane 的用户获取文档,因为 name 只是用户中存在的一个字段文档,但绝不是用户 Jane 的唯一标识符。

关于elasticsearch - 术语查找机制可以通过 id 以外的其他字段查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34603898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com