У меня есть требование, чтобы пользователь передавал строку, в которой выполняется поиск по атрибутуasticsearch (5.6, не удается обновить). Строка может быть простой «michael» или «firstName: Michael». Я хочу иметь возможность предоставить флаг, чтобы сделать запрос нечетким. По этой причине я НЕ хочу использовать нечеткий оператор «~», но вместо этого хочу использовать «нечеткие» параметры, как определено здесь: query_string (поиск «нечеткий», «fuzzy_prefix_length»)
Однако это не работает:
POST *person/_search
{
"query": {
"query_string": {
"query": "micheal",
"fuzziness": 2,
"fuzzy_max_expansions": 50,
"fuzzy_prefix_length": 2
}
}
}
Даже если это так:
GET * person / _search {"query": {"fuzzy": {"_all": {" value ":" micheal "," fuzziness ": 2," prefix_length ": 2," max_expansions ": 50}}}}
Я также попробовал следующее, что также делаетне работает:
QueryStringQueryBuilder queryStringQueryBuilder = new QueryStringQueryBuilder(submittedQuery);
if (elasticQuery.getFuzzy()) {
queryStringQueryBuilder.fuzziness(Fuzziness.AUTO);
queryStringQueryBuilder.fuzzyPrefixLength(3);
queryStringQueryBuilder.fuzzyMaxExpansions(20);
}