【发布时间】:2018-07-17 05:06:08
【问题描述】:
在使用 Elastic Search 时,我试图通过 Java API 排除某个字段的评分。
例如两个文档:
{
"id": 1,
"bar": "foo",
"exclude_this": "filler"
},
{
"id": 2,
"bar": "different",
"exclude_this": "something else"
}
目前,我正在构建这样的查询:
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.must(QueryBuilders.queryStringQuery(query)
.defaultOperator(Operator.AND));
query 是一些 ElasticSearch 查询字符串。不用说,我不希望exclude_this 影响搜索结果。但是,如果例如String query = "filler",那么我不希望对象 1 出现 - 在这种情况下,我不想匹配任何内容。我尝试使用文档中推荐的fields 方法来完成此操作:
Map<String, Float> fieldsToQuery = new HashMap<>();
fieldsToQuery.put("bar", 1f);
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.must(QueryBuilders.queryStringQuery(query)
.defaultOperator(Operator.AND))
.fields(fieldsToQuery);
但是,在这样做之后,除了通配符搜索之外的所有内容,我都没有得到任何搜索结果;即使String query = "foo",我什么也得不到,好像每个字段都被排除在外。
有什么帮助吗?
【问题讨论】:
标签: java elasticsearch