ElasticSearch:在ElasticSearch中基于对象阵列中的值过滤搜索结果

tuwxkamq  于 2023-06-05  发布在  ElasticSearch
关注(0)|答案(1)|浏览(194)

我有一个带有Map的对象数组:

"mappings" : {
      "properties" : {
        "something" : {
          "type" : "nested",
          "properties" : {
            "key1" : {
              "type" : "text"
            },
            "key2" : {
              "type" : "text"
            }
          }
        },

我有一个输入,如-[{key 1:“x”,key2:“y”},{key1:“x”,key2:“z”}]。
如何过滤包含key 1和key 2的精确组合集的结果

b4qexyjb

b4qexyjb1#

请尝试:

PUT test_your_index
{
  "mappings": {
    "properties": {
      "something": {
        "type": "nested",
        "properties": {
          "key1": {
            "type": "text"
          },
          "key2": {
            "type": "text"
          }
        }
      }
    }
  }
}
POST test_your_index/_bulk?refresh
{ "index" : { "_id" : "1" } }
{ "something" : [{ "key1" : "x", "key2" : "y" }, { "key1" : "x", "key2" : "z" }] }
{ "index" : { "_id" : "2" } }
{ "something" : [{ "key1" : "x", "key2" : "y" }, { "key1" : "a", "key2" : "b" }] }
{ "index" : { "_id" : "3" } }
{ "something" : [{ "key1" : "x", "key2" : "z" }, { "key1" : "z", "key2" : "w" }] }
POST test_your_index/_search
{
  "query": {
    "nested": {
      "path": "something",
      "query": {
        "bool": {
          "must": [
            { "match": { "something.key1": "x" }},
            { "match": { "something.key2": "y" }}
          ]
        }
      }
    }
  }
}

相关问题