Когда мы пытаемся сделать регулярное выражение в 10 различных терминах, мы получаем следующее исключение:
ElasticsearchException[Elasticsearch exception [type=too_complex_to_determinize_exception, reason=too_complex_to_determinize_exception: Determinizing automaton with 67 states and 278 transitions would result in more than 10000 states.]];
Увеличение ускорения устранит ошибку. Но количество пройденных терминов будет отличаться и не может установить конкретное значение. Я подумываю об использовании подстановочного знака.
Подстановочный знак также внутренне создает состояния, поэтому, является ли использование подстановочного знака лучшим подходом или есть лучший способ?
Мой пример запроса с использованием регулярных выражений:
search {"from":0,"size":0,"timeout":"60s","query":{"bool":{"must":[{"regexp":{"filed_name":
{"value":".*term.*|.*term.*|.*term.*|.*term.*|.*term.*|.*term.*|.*term.*|.*term.*|.*term.*|.*term.*|.*term.*","flags_value":65535,"max_determinized_states":10000,"boost":1.0}
}},{"range":{"condition_field":
{"from":0,"to":null,"include_lower":false,"include_upper":true,"boost":1.0}
}},{"range":{"condition_filed":
{"from":0,"to":null,"include_lower":false,"include_upper":true,"boost":1.0}
}}],"adjust_pure_negative":true,"boost":1.0}},"profile":true,"sort":[{"_id":{"order":"asc"}}]}