Важным аспектом является не имя вашего поля (например, * .keyword), а тип поля. Для поиска, сортировки и агрегации с точным соответствием тип поля должен быть «ключевое слово».
Если вы используете только поле legalsort для отображения, сортировки, агрегации или точного соответствия, просто измените тип с «текст» на «ключевое слово».
Если вы хотите использовать одну и ту же информацию для обеих целей, рекомендуется сделать ее многопольным. Используйте поле типа «ключевое слово» для сортировки, агрегации и точного поиска совпадений, а поле «текст» - для полнотекстового поиска.
Наличие 2 типов, доступных для 2 целей, является значительным улучшением по сравнению с единственным типом строки, который вы имели в ES 1.0. Когда вы сортировали в ES 1.0, информация, хранящаяся в инвертированном индексе, должна была быть инвертирована и хранилась в оперативной памяти. Эта структура данных была / была названа полевыми данными. Он был неограниченным и часто вызывал исключения из памяти. В новых версиях Lucene появилась альтернативная структура данных, которая находится на диске (и в кеше файловой системы) в качестве «замены» структуры данных «fielddata». Он называется do c -values и позволяет сортировать огромные объемы данных, не занимая значительный объем оперативной памяти. Единственный недостаток: значения документа недоступны для анализируемого текста (поля типа текста), поэтому необходимо поле ключевого слова типа.
Вы также можете установить для параметра отображения «fielddata» значение true для своего поля legalsort. , позволяя fielddata для этого конкретного поля вернуть предыдущее поведение со всеми его недостатками