Forepick
Forepick

Reputation: 937

Elasticsearch Query: Select documents by comparing lists of values (golang)

I have a type of document indexed in ElasticSearch, with a simplified structure as follows:

{
    id: "54"
    properties: ["nice", "green", "small", "dry"]
}

Now I want to select all the documents in this index, which doesn't contain a list of given values in the properties field.

Something like: SELECT * FROM index WHERE properties NOT CONTAINS ["red", "big", "scary"]

How can I implements that on elasticsearch? (And I someone knows how can I implements such a query on Golang, I'll be even better :-) )

Thanks!

Upvotes: 0

Views: 304

Answers (1)

Paplusc
Paplusc

Reputation: 1130

You can match those documents from index using the clause bool. It will look something like this:

{
    "bool": {
        "must_not": [
            { "term": { "properties": "red" }},
            { "term": { "properties": "big" }},
            { "term": { "properties": "scary" }}
         ]
    }
}

The query could be like this:

{
  "filtered": {
    "query": {
      "match": { "id": "54" }
    },
    "filter":{
      "bool": {
        "must_not": [
            { "term": { "properties": "red" }},
            { "term": { "properties": "big" }},
            { "term": { "properties": "scary" }}
        ]
      }
    }
  }
}

For more information you can check this link: Filtered query

Upvotes: 1

Related Questions