Есть готовый индекс эластика использующийся для автодополнений. Разообрался как сделать фильтрацию по одному слову состоящему из букв, но не могу понять как сделать поиск так что бы можно было сделать поиск слов с пробелами. Например могу в поле names найти по запросу "Иванов" запись вида "Иванов Иван Иванович", но если я задам в поиск "Иванов Иван" то ничего не вернётся. Кусок кода:
SearchSourceBuilder search = SearchSourceBuilder.searchSource();
BoolQueryBuilder query = new BoolQueryBuilder();
String value = "Иванов Иван"; //строка которая ищется в индексе
query.must(QueryBuilders.regexpQuery("names",".*" + value.replaceAll("([+\\-!\\(\\){}\\[\\]^\"~*?:\\\\]|[&\\|]{2})", "\\\\$1") + ".*"));
search.query(query);
Продвижение своими сайтами как стратегия роста и независимости