我有一个要求用户传递一个针对Elasticsearch搜索的字符串(5.6,无法更新)。该字符串可以是简单的“ michael”或“ firstName:Michael”。我希望能够提供一个标志来使查询变得模糊。因此,我不想使用模糊运算符“〜”,而是想使用此处定义的“ fuzzy”参数:query_string(搜索“ fuzzy”,“ fuzzy_prefix_length”)
但是这不起作用:
POST *person/_search
{
"query": {
"query_string": {
"query": "micheal",
"fuzziness": 2,
"fuzzy_max_expansions": 50,
"fuzzy_prefix_length": 2
}
}
}
即使这样做:
GET *人/ _搜索 { “查询”:{ “模糊”:{ “ _all”:{ “ value”:“ micheal”, “模糊性”: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);
}