I have documents that look like:
{
"tags" => [
"tag1",
"tag2",
],
"name" => "Example 1"
}
{
"tags" => [
"tag1",
"tag3",
"tag4"
],
"name" => "Example 2"
}
What I now want is to do a terms search where given array might look like:
[tag1, tag3]
where expected hit should be:
{
"tags" => [
"tag1",
"tag3",
"tag4"
],
"name" => "Example 2"
}
However, when I do a query like:
GET _search
{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"bool": {
"must": [
{
"terms": {
"tags": [
"tag1",
"tag3"
]
}
}
]
}
}
}
}
}
I get both "Example 1" and "Example 2" as hits since both Example 1 and Example 2 contains either tag1 or tag3. By looking at the documentation for terms I figured out that terms is actually a contains query.
How can I in this case make sure that Example 2 is the only hit when querying with tag1 and tag3?