如果你能展示你尝试过的东西BoolQuery
并解释为什么它不起作用,那就太好了。这是一个使用 Java API 的查询示例BoolQuery
。
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
boolQuery.should(QueryBuilders.termsQuery("lang", "en"));
boolQuery.should(QueryBuilders.termsQuery("location", "en"));
BoolQueryBuilder titleBoolQuery = QueryBuilders.boolQuery();
titleBoolQuery.should(QueryBuilders.termsQuery("title", new String[]{"americanlegion", "conversion"}));
titleBoolQuery.must(QueryBuilders.termQuery("title", "conversion"));
boolQuery.should(titleBoolQuery);
生成的 JSON:
{
"bool" : {
"should" : [ {
"terms" : {
"lang" : [ "en" ]
}
},{
"terms" : {
"location" : [ "pa" ]
}
},{
"bool" : {
"must" : {
"term" : {
"title" : "conversion"
}
},
"should" : {
"terms" : {
"title" : [ "americanlegion", "conversion" ]
}
}
}
} ]
}
}
编辑
如果要使用 Lucene 语法,请使用QueryStringQueryBuilder
QueryStringQueryBuilder query = QueryBuilders.queryString("user.name:\"John\" OR user.name:\"Matt\"");
这将产生 JSON
{
"query_string" : {
"query" : "user.name:\"John\" OR user.name:\"Matt\""
}
}