在一个索引下,我有一个包含字段的文档 name
以及 location
. 现在,用 name
“彼得”和 location
“巴黎”。
我的java代码是:
SearchRequest searchRequest = new SearchRequest(indexName);
SearchSourceBuilder builder = new SearchSourceBuilder().postFilter(QueryBuilders.termQuery("name", "Peter")).postFilter(QueryBuilders.termQuery("location", "Paris"));
SearchResponse response = null;
try {
response = client.search(searchRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
e.printStackTrace();
}
上面的代码,不能给我准确的结果。有人能帮我找到正确的方法吗?
2条答案
按热度按时间pbgvytdp1#
在json格式中,您的查询应该如下所示:
j2cgzkjk2#
您可以使用下面的代码,注意目前您使用的术语是查询
text
字段,这将不允许您进行不区分大小写的匹配,因为它未被分析,通常用于精确搜索。另外请注意代码中的注解,因为您可以看到它生成布尔查询,所以如果您希望这两个术语都存在,请替换
boolQueryBuilder.should(nameMatchQueryBuilder);
构造boolQueryBuilder.must(nameMatchQueryBuilder);