我正在使用弹性搜索,但无法对应用自定义分析器的属性进行短语搜索。
自定义分析器被提及为:
"settings" : {
"analysis.analyzer.string_lowercase.type" : "custom",
"analysis.analyzer.string_lowercase.tokenizer" : "keyword",
"analysis.analyzer.string_lowercase.filter" : "lowercase"
}
属性值类似于:“入水坑,出水坑”,或者可以是任何字符串。
我尝试过使用以下内容:
1) **(Not worked)** QueryBuilders.queryString("*into the puddle*").autoGeneratePhraseQueries(true).defaultOperator(Operator.AND);
2) **(Not worked)** QueryBuilders.matchPhraseQuery(attribute, "into the puddle");
3) **(Not worked)** QueryBuilders.queryString("*into the puddle*").autoGeneratePhraseQueries(true).defaultOperator(Operator.AND).analyzeWildcard(true);
但是,幸运的是,尝试 1 可以很好地处理嵌套对象。
FilterBuilders.nestedFilter(attribute, queryString("*into the puddle*").field(attribute)
.defaultOperator(Operator.AND).analyzeWildcard(true));