0
Java APIを使用して、クエリに関連付けられているフィールド/強調表示されたフィールドを取得できる必要があります。だから私は_all
フィールド(またはそれ以外の場合は*
)をクエリに追加し、応答のフィールドを強調表示します。 これはほとんどの場合動作しますが、必ずしもそうではありません。ここでは抜粋です。弾性検索:強調表示されたフィールドが必ず返されるとは限りません
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
は、それが技術的に常に照会されることを考えると、常に応答ではアクセスできない理由上の任意のアイデア?
こんにちは、私は理解することはできませんよ。シナリオでダミーデータを使ってリアルタイムの例を教えてください。 –