elasticsearch elasticsearch按链顺序搜索查询,elasticsearch,elasticsearch" /> elasticsearch elasticsearch按链顺序搜索查询,elasticsearch,elasticsearch" />

elasticsearch elasticsearch按链顺序搜索查询

elasticsearch elasticsearch按链顺序搜索查询,elasticsearch,elasticsearch,我有多个查询,我希望结果按查询顺序过滤 例如,我希望从查询1结果中搜索查询2,从查询2结果中搜索查询3。 查询3的结果不应超过查询1的结果 问题3⊆ 问题2⊆ 问题1 | id | document | category | group | | -------- | ----- | --- | --- | | 1 | I want better sea

我有多个查询,我希望结果按查询顺序过滤

例如,我希望从查询1结果中搜索查询2,从查询2结果中搜索查询3。 查询3的结果不应超过查询1的结果

问题3⊆ 问题2⊆ 问题1

| 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格式提供你的索引映射、示例文档和预期文档,以便其他用户可以轻松地重现问题并帮助你。