Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
185 views
in Technique[技术] by (71.8m points)

java - how to use terms query in elasticsearch 7.x in this case

elasticsearch version is 7.x

here has some nested data blow :

data1:
[{name:"tom"},{name:"jack"}]

data2:
[{name:"tom"},{name:"rose"}]

data3:
[{name:"tom"},{name:"rose3"}]
...

dataN:
[{name:"tom"},{name:"roseN"}]

when i use the terms query , I just want to search tom, jack, But don't want to include rose...roseN

query:{
terms:{["tom","jack"]}
}
this code is not effective
question from:https://stackoverflow.com/questions/65838516/how-to-use-terms-query-in-elasticsearch-7-x-in-this-case

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Adding a working example

Index Data:

PUT /_doc/1
{
  "names": [
    {
      "name": "tom"
    },
    {
      "name": "jack"
    }
  ]
}

PUT /_doc/2
{
  "names": [
    {
      "name": "tom"
    },
    {
      "name": "rose"
    }
  ]
}

Search Query:

    {
  "query": {
    "bool": {
      "must": {
        "terms": {
          "names.name": [
            "tom",
            "jack"
          ]
        }
      },
      "must_not": {
        "match": {
          "names.name": "rose"
        }
      }
    }
  }
}

Search Result:

"hits": [
      {
        "_index": "65838516",
        "_type": "_doc",
        "_id": "1",
        "_score": 1.0,
        "_source": {
          "names": [
            {
              "name": "tom"
            },
            {
              "name": "jack"
            }
          ]
        }
      }
    ]

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...