elasticsearch elasticsearch按链顺序搜索查询
我有多个查询,我希望结果按查询顺序过滤 例如,我希望从查询1结果中搜索查询2,从查询2结果中搜索查询3。 查询3的结果不应超过查询1的结果 问题3⊆ 问题2⊆ 问题1elasticsearch elasticsearch按链顺序搜索查询,elasticsearch,elasticsearch,我有多个查询,我希望结果按查询顺序过滤 例如,我希望从查询1结果中搜索查询2,从查询2结果中搜索查询3。 查询3的结果不应超过查询1的结果 问题3⊆ 问题2⊆ 问题1 | id | document | category | group | | -------- | ----- | --- | --- | | 1 | I want better sea
| id | document | category | group |
| -------- | ----- | --- | --- |
| 1 | I want better search | fruit | 1 |
| 2 | I want to watch search movie | fruit | 2 |
| 3 | search movie | animal | 1 |
query1=Q(“匹配”,group=“1”)
查询2=Q(“匹配”,类别=“水果”)
query3=Q(“匹配”,document=“搜索”)
我想要的只是结果中的文档1
bool函数似乎会为每个查询赋予相等的权重,例如,它会给出与query3完全匹配的结果,query1没有完全匹配或相关性低,这与query3的顺序不同⊆ 问题2⊆ 问题1
这是我的代码:
resp = es.search(index='test-vector-index', body={
"query" : {
"bool": {
"must": [
{ "match" : { "group" : "1" }},
{ "match": { "category": "fruit" } },
{ "match": { "document": "search" } },
]
}
}
}
)
它们不像我想的那样工作,请帮我解决这个问题
谢谢。我不确定你到底想要什么。 如果我理解的很好,你可能可以使用“过滤器”而不是必须的 更新之后。这样的查询应该适用于您的示例
GET /_search
{
"query": {
"bool": {
"must": [
{"match": {
"document": "search"
}}
],
"filter": [
{
"term": {
"category.keyword": "fruit"
}
},
{
"term": {
"group": 1
}
}
]
}
}
}
我试过过滤器,但没有给我正确的结果。我的查询3没有从查询1中搜索。我需要更多信息。你能提供你想要的和不想要的数据和结果的例子吗?谢谢你的回答,我编辑了我的问题,请看一看。最好是以JSON格式提供你的索引映射、示例文档和预期文档,以便其他用户可以轻松地重现问题并帮助你。