We have two fields in our Elasticsearch index, one is called 'Command' and the other is called 'Code'.
What I'm looking to do is have a 'terms' match for 2 possible values for Command. Then, for each of the 2 Commands , have a must match for them.
So, something like:
QueryBuilder qb = QueryBuilders
.must(termsQuery("Command.keyword", "TypeA", "TypeB"))
.must(termsQuery("Code.keyword", "TypeACodeA", "TypeACodeB", "TypeBCodeA", "TypeBCodeB"))
The problem is, I believe that I will get too many potential matches - ones I don't want, such as a Command of 'TypeA' to a Code of 'TypeBCodeA'. What I'm looking for is query results that ONLY include:
Command TypeA matched to TypeACodeA OR TypeACodeB,
Command TypeB matched to TypeBCodeA or TypeBCodeB
I know that there's nested queries, sub queries, etc, although for these other techniques how I would apply them. Any suggestions would be great.
- David H.