簡體   English   中英

ElasticSearch中的復雜嵌套過濾器

[英]Complex nested filter in ElasticSearch

我有此數據:

{
    "someKey1" : "someValue1",
    "someKey2" : "someValue2",
    "someKey3" : "someValue3",
    "someKey4" : "someValue4",
    "projectParticipants" : [
        {
            "participant_id" : 1,
            "role_id" : 1
        },
        {
            "participant_id" : 4,
            "role_id" : 2
        },
        {
            "participant_id" : 5,
            "role_id" : 3
        }
    ]
}

我需要找到項目,其中包含某些角色的某些項目參與者。 例如,我要查找項目,其中角色1的人員1角色2的人員4

我怎樣才能做到這一點?

您需要為此使用嵌套映射和查詢。 您可以在此處閱讀有關嵌套類型的更多信息

完成后,您可以進行嵌套查詢

因此,在將projectParticipant聲明為嵌套在映射中之后,如下查詢就足夠了-

{
  "query": {
    "bool": {
      "must": [
        {
          "nested": {
            "path": "projectParticipants",
            "score_mode": "avg",
            "query": {
              "bool": {
                "must": [
                  {
                    "match": {
                      "projectParticipants.participant_id": 1
                    }
                  },
                  {
                    "match": {
                      "projectParticipants.role_id": 1
                    }
                  }
                ]
              }
            }
          }
        },
        {
          "nested": {
            "path": "projectParticipants",
            "score_mode": "avg",
            "query": {
              "bool": {
                "must": [
                  {
                    "match": {
                      "projectParticipants.participant_id": 4
                    }
                  },
                  {
                    "match": {
                      "projectParticipants.role_id": 2
                    }
                  }
                ]
              }
            }
          }
        }
      ]
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM