【发布时间】:2017-09-23 00:01:48
【问题描述】:
使用 Java API,我需要能够检索与查询关联的字段/突出显示的字段。因此,我将_all 字段(或*)添加到查询中,并将突出显示的字段添加到响应中。
它大部分时间都有效,但并非总是如此。这是一个 sn-p :
final BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
Arrays.asList(query.split(" "))
.stream()
.map(QueryParser::escape)
.map(x -> String.format("*%s*", x))
.forEach(x -> {
boolQueryBuilder.should(
QueryBuilders.queryStringQuery(x)
.field("_all")
.allowLeadingWildcard(true));
});
SearchResponse response = client
.prepareSearch()
.setSize(10)
.addHighlightedField("*")
.setHighlighterRequireFieldMatch(false)
.setQuery(boolQueryBuilder)
.setHighlighterFragmentSize(40)
.setHighlighterNumOfFragments(40)
.execute()
.actionGet();
知道为什么field 字段和highlightedField 在技术上总是被查询,因此在响应中并不总是可以访问吗?
【问题讨论】:
-
嗨,我听不懂。您能否在您的场景中给出带有虚拟数据的实时示例?
标签: java elasticsearch highlighting