![](/img/trans.png)
[英]How to translate an ElasticSearch multimatch search query from cURL into JAVA?
[英]Java equivalent of elasticsearch CURL query?
我的项目有一个新的要求,即将所有当前在 postresql 中的数据迁移到 elasticsearch。 成功迁移了我所有的数据,但我坚持编写 java 代码来搜索弹性搜索索引中的一些数据。
我需要从索引中找到activity.attentionLevel
的平均值。
我写了类似下面的查询来查找平均值:
GET proktor-activities/_search
{
"aggs" : {
"avg_attention" : {
"avg" : {
"script" : "Float.parseFloat(doc['activity.attentionLevel.keyword'].value)" }
}
}
}
请帮我找到 java 等效代码来做同样的事情。
提前致谢
使用 Elastic 的 RestHighLevel API 会是这样的:
// Create the client
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http")));
// Specify the aggregation request
SearchRequest searchRequest = new SearchRequest("proktor-activities");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.aggregation(AggregationBuilders
.avg("avg_attention")
.field("activity.attentionLevel"));
searchRequest.source(searchSourceBuilder);
// Execute the aggreagation with Elasticsearch
SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);
// Read the aggregation result
Aggregations aggregations = response.getAggregations();
Avg averageAttention = aggregations.get("avg_attention");
double result = averageAttention.getValue();
client.close(); // get done with the client
更多信息在这里。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.