gpt4 book ai didi

java - 在 Elasticsearch Java API 中将 _source 添加到 SearchQueryBuilder 的等效函数?

转载 作者:行者123 更新时间:2023-11-30 06:13:36 25 4
gpt4 key购买 nike

我正在使用以下搜索查询:

SearchRequestBuilder searchRequestBuilder = client.getClient()
.prepareSearch("index_5589b14f3004fb6be70e4724")
.setSearchType(SearchType.SCAN)
.setScroll(new TimeValue(60000))
.setQuery(QueryStem(stem))
.addFields("field1", "field2")
.setHighlighterPostTags("</em>")
.setHighlighterPreTags("<em>")
.addHighlightedField("field1", 20, 150)
.addHighlightedField("field2", 20, 150)
.setFrom(1)
.setSize(1);

DSL 的等效版本是:

GET index_5589b14f3004fb6be70e4724/document_set/_search
{
"query": {
// some query
},
"fields": ["field1", "field2"],
"highlight": {
"pre_tags" : ["<em>"],
"post_tags" : ["</em>"],
"fields": {
"field1": {
"number_of_fragments": 10,
"fragment_size": 20
},
"field2": {
"number_of_fragments": 10,
"fragment_size": 20
}
}
}
}

我在搜索响应中尝试了 .getSource(),但它给了我 NullPointerException。然后我在 Sense 上查看,发现它没有任何 _source 字段。但是,如果我将 "_source": [...], 添加到查询 DSL,我将获得所需的数据。

我想将 "_source": ["docset_id", "doc_id"], 添加到 SearchRequestBuilder。我应该怎么做?我正在考虑使用 .setSource() 但它做了其他事情。

最佳答案

您可以使用 .setFetchSource(@Nullable String[] include, @Nullable String[] exclude) 方法来表示您想要返回哪些字段,因此在您的情况下:

.setFetchSource(new String[]{"docset_id", "doc_id"}, null)

关于java - 在 Elasticsearch Java API 中将 _source 添加到 SearchQueryBuilder 的等效函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31632353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com