gpt4 book ai didi

java - Java TransportClient 的结果与 REST/CURL 的结果不同

转载 作者:行者123 更新时间:2023-11-30 07:05:16 24 4
gpt4 key购买 nike

我已经编写了一个带有聚合的完整查询,当我使用 REST 并使用 CURL 调用并执行 POST 时,这正是我想要的:

POST http://127.0.0.1:9200/user_index/account_record/_search?search_type=count
{
"aggs":{
"updates_by_user":{
"terms":{
"script":"doc['accountNumber'].value"
}
}
}
}

我想使用相同的 JSON 并从 Java API 返回相同的结果。相反,Java API 的行为就像我执行了 HTTP GET 操作一样。有没有办法通过 Java API 轻松重用相同的 JSON?从 Javadoc 看来,必须使用 .addAggregation 等众多方法将其分解为多个部分。我只是得到了高级别计数,没有有关存储桶的详细信息

郑重声明,我的 JSON 要复杂得多,我只是为了解决问题而进行简化。

我的 Java 代码看起来像

SearchResponse searchResponse = client.prepareSearch("user_index")
.setTypes("account_record")
.setSearchType(SearchType.QUERY_THEN_FETCH)
.setSize(0)
.setQuery(query)
.execute().actionGet();

有什么想法吗?我想我总是可以使用 HTTP 客户端,但除非有必要,否则宁愿不引入另一个库/语法。

感谢您的任何想法。

最佳答案

            .prepareSearch("user_index")
.setTypes("account_record")
.setSearchType(SearchType.QUERY_THEN_FETCH)
.setSize(0)
.addAggregation(
AggregationBuilders.terms("updates_by_user")
.script(new Script("doc['accountNumber'].value"))
)
.execute().actionGet();

然后你需要这样的东西来访问聚合结果:

Terms terms = response.getAggregations().get("updates_by_user");

关于java - Java TransportClient 的结果与 REST/CURL 的结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40252126/

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