2015-03-31 2 views
2

Я пытаюсь выполнить поиск по индексу эластичного поиска, используя фильтр подстановочных знаков, он работает правильно, пока я не использую «пробел» в моих критериях поиска.Поиск эластичных карт не работает с пробелом

Ex: если значение в упругом индексе «Это тестовое значение»

, когда я использую значение поиска: «Это *» -> Рабочее, выборка значения , когда я использую значение поиска: «Это * "-> не работает, в результате чего в нулевом матче

мой код выглядит следующим образом

QueryBuilders. wildcardQuery (
ElasticSearchUtil.FIELDNAME, searchValue.toLowerCase())

как я могу обрабатывать пространство и сделать мой поиск успешным?

привет UI

ответ

3

Подстановочный запрос работает только с одним маркером. То, что вы пытаетесь сделать, это найти один токен, за которым следует еще один токен, причем второй токен указан префиксом. Этого можно достичь, используя запрос match phrase prefix. Ваш запрос будет выглядеть следующим образом:

QueryBuilders.matchPhrasePrefixQuery (ElasticSearchUtil.FIELDNAME, searchValue)

Обратите внимание, что searchValue не должно быть «*» в конце.

+0

Большое вам спасибо, это работает – user3704685

Смежные вопросы