Reputation: 937
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
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