gpt4 book ai didi

elasticsearch - 仅在 Elasticsearch native 查询 Java api 中返回特定字段

转载 作者:行者123 更新时间:2023-12-02 23:29:28 24 4
gpt4 key购买 nike

我正在构建一个 native 查询,但我只想返回某些字段,所有这些字段都保存在父字段中。我想我正在寻找与 REST API 的 _source 等效的 QueryBuilders 或 NativeSearchQueryBuilder。这是一个代码示例:

NativeSearchQueryBuilder sb = new NativeSearchQueryBuilder()
.withIndices("myIndex")
.withTypes("myType")
.withQuery(QueryBuilders.queryStringQuery("parent.field2:Foo*"));
.withFields("parent.field1");

我希望这会返回一个仅包含 parent.field1 的列表,这些列表与具有 parent.field2(如 Foo*)的对象相关联。但它什么也不返回。

谢谢你的帮助!

最佳答案

经过一番研究,我发现答案在 NativeSearchQueryBuilder 中。我只是使用旧版本的spring-data Elasticsearch ,所以我看不到这个方法:withSourceFilter。这样做的方法是:

NativeSearchQueryBuilder sb = new NativeSearchQueryBuilder()
.withIndices("myIndex")
.withTypes("myType")
.withQuery(QueryBuilders.queryStringQuery("parent.field2:Foo*"));
.withSourceFilter(new FetchSourceFilter(<String array of includes>, null));

FetchSourceFilter 接受 2 个参数,一个 String[] 包含数组和一个排除数组。在我的示例中,我将一个类似 new String[]{"parent.field1"} 的数组传递给 FetchSourceFilter,然后将其传递给 withSourceFilter。然后,上面的搜索将返回(一旦构建并运行)parent.field1 和 parent.field2 的列表,如 Foo*。

我升级到的版本是 spring-data-elasticsearch 2.0.2。

关于elasticsearch - 仅在 Elasticsearch native 查询 Java api 中返回特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38237084/

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