弹性搜索中具有模糊性的 Bool 查询 java 客户端
Bool query with fuzziness in elastic search java client
我正在尝试从给定的大学和姓名中选择用户。这里的名字有模糊查询。
以下是弹性搜索 (v5.1.2) 中的查询,它给了我想要的结果。但是在 Java
中给出错误
{
"query" : {
"bool": {
"must" : [{
"match": {
"collegeAccountCode": "DIT"
}
},
{
"match": {
"name" : {
"query": "Rahul",
"fuzziness" : "AUTO"
}
}
}]
}
}
}
我尝试使用以下 java API (v5.1.2)
来实现
QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("name", studentName).fuzziness())
.must(QueryBuilders.matchQuery("collegeAccountCode", AccountId));
但我收到一条错误消息:
"The method must(QueryBuilder) in the type BoolQueryBuilder is not applicable for the arguments
(Fuzziness)"
如何解决这个错误或者有没有其他方法可以实现这个查询?
问题是,没有参数 return 的方法 fuziness()
当前 Fuzziness
,这显然不是 must()
所期望的,您需要做像这样:
QueryBuilders.boolQuery()
.must(QueryBuilders.matchQuery("name", "Rahul").fuzziness(Fuzziness.AUTO))
.must(QueryBuilders.matchQuery("collegeAccountCode", "DIT"));
一段代码,稍微解释一下问题:
/** Sets the fuzziness used when evaluated to a fuzzy query type. Defaults to "AUTO". */
public MatchQueryBuilder fuzziness(Object fuzziness) {
this.fuzziness = Fuzziness.build(fuzziness);
return this;
}
/** Gets the fuzziness used when evaluated to a fuzzy query type. */
public Fuzziness fuzziness() {
return this.fuzziness;
}
您调用了第二种方法,而您需要调用第一种方法。
我正在尝试从给定的大学和姓名中选择用户。这里的名字有模糊查询。 以下是弹性搜索 (v5.1.2) 中的查询,它给了我想要的结果。但是在 Java
中给出错误{
"query" : {
"bool": {
"must" : [{
"match": {
"collegeAccountCode": "DIT"
}
},
{
"match": {
"name" : {
"query": "Rahul",
"fuzziness" : "AUTO"
}
}
}]
}
}
}
我尝试使用以下 java API (v5.1.2)
来实现QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("name", studentName).fuzziness())
.must(QueryBuilders.matchQuery("collegeAccountCode", AccountId));
但我收到一条错误消息:
"The method must(QueryBuilder) in the type BoolQueryBuilder is not applicable for the arguments
(Fuzziness)"
如何解决这个错误或者有没有其他方法可以实现这个查询?
问题是,没有参数 return 的方法 fuziness()
当前 Fuzziness
,这显然不是 must()
所期望的,您需要做像这样:
QueryBuilders.boolQuery()
.must(QueryBuilders.matchQuery("name", "Rahul").fuzziness(Fuzziness.AUTO))
.must(QueryBuilders.matchQuery("collegeAccountCode", "DIT"));
一段代码,稍微解释一下问题:
/** Sets the fuzziness used when evaluated to a fuzzy query type. Defaults to "AUTO". */
public MatchQueryBuilder fuzziness(Object fuzziness) {
this.fuzziness = Fuzziness.build(fuzziness);
return this;
}
/** Gets the fuzziness used when evaluated to a fuzzy query type. */
public Fuzziness fuzziness() {
return this.fuzziness;
}
您调用了第二种方法,而您需要调用第一种方法。