如何在弹性搜索中进行短语搜索?

时间:2012-11-06 10:05:26

标签: elasticsearch

我正在使用弹性搜索,无法对应用自定义分析器的属性执行短语搜索

自定义分析器被称为:

"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));

1 个答案:

答案 0 :(得分:1)

1) - 3)似乎缺少一个字段,因此正在搜索_all字段,我猜这个字段是使用标准分析器编制索引的。