Description
openedon Feb 23, 2023
Description
The Terms Set Query lets you match documents that have some minimum number of matches to a given array of input search terms. The minimum number of matches however can only be specified by referencing another field on the document or by using a script.
I have a use case where I need to be able to specify the minimum number of terms to match at query time, agnostic of documents so the minimum_should_match_field
is not useful. Further, since I know I need to match a minimum of exactly, say, 3 terms, it seems like overkill to have to enable and using scripting (as in the use of minimum_should_match_script
) to just return a static number.
Today as an alternative, I'm instead using a Bool Query with a minimum_should_match
accepting my explicit number and all of my input search terms mapping to an array of individual { term: { field: value } }
entries in the should
array of the bool. However, this is very json-inefficient, especially when I am making queries with many (possibly thousands) of terms in my query.
I was so happy to find the Terms Set query as a leaner, more specialized alternative to my massive should
array but was then very surprised that there was no query-time input for the minimum match count (outside scripting).
TL;DR: Terms Set query should support a third possible top-level parameter for specifying the minimum number of terms to match which simply accepts a number, like minimum_should_match