gpt4 book ai didi

ruby-on-rails - 通过另一个字段在 elasticsearch 中过滤 multi_match 查询

转载 作者:行者123 更新时间:2023-12-04 06:07:33 24 4
gpt4 key购买 nike

我正在尝试使用 ElasticSearch 执行搜索,它必须匹配部分索引中的某些搜索词,但仅限于属于特定项目的部分,即当前用户有权访问的项目。

因此,我正在尝试对查询应用过滤器,以便它可以过滤 project_id 包含在 2 或 3 个不同值的小集合中的部分。如果一个部分的 project_id 在有效的 project_id 中,则应包括在内。否则不会。

这一切都是在使用 elasticsearch-model gem 的 Rails API 的上下文中进行的。

这是我传入的查询。它假装过滤部分,以便结果中只包含项目 2 和 5 中的部分。

{
"query": {
"filtered": {
"query": {
"multi_match": {
"query": "search terms here",
"type": "cross_fields",
"fields": ["title^3", "contents"],
"operator": "and"
}
},
"filter": {
"or": {
"filters": [
{ "exists": { "project_id": 2 } },
{ "exists": { "project_id": 5 } }
]
}
}
}
}
}

我得到这个错误:

QueryParsingException[[sections] [exists] filter does not support [project_id]]

有什么想法吗?

最佳答案

存在过滤器意味着检查字段是否存在。 refer .

为了得到你想要达到的目标。

 {
"query": {
"filtered": {
"query": {
"multi_match": {
"query": "search terms here",
"type": "cross_fields",
"fields": [
"title^3",
"contents"
],
"operator": "and"
}
},
"filter": {
"terms": {
"project_id": ["1","2"]
}
}
}
}
}

希望对您有所帮助...!

关于ruby-on-rails - 通过另一个字段在 elasticsearch 中过滤 multi_match 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23642480/

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