我想创建一个带有聚合结果的searchResponse对象以进行测试。
我尝试了以下方法
SearchResponseSections section = new SearchResponseSections(null, null, .......);
这里的第一个参数用于我不想要的点击,但第二个参数接受聚合。
现在,我无法使用bucket创建自定义聚合对象。
测试代码如下:
public AutoCompleteResponseDto getAutoCompleteResponse(SearchResponse searchResponse, String field, int limit) {
Terms aggregation = searchResponse.getAggregations().get("typeAhead");
final Set<String> bucketKeys = aggregation.getBuckets().stream().map(Terms.Bucket::getKeyAsString).collect(Collectors.toSet());
return AutoCompleteResponseDto.builder().totalCount(bucketKeys.size()).values(bucketKeys).field(field).build();
}
我还尝试使用Json创建SearchResponse,如下所示:
public static List<NamedXContentRegistry.Entry> getDefaultNamedXContents() {
Map<String, ContextParser<Object, ? extends Aggregation>> map = new HashMap<>();
map.put(StringTerms.NAME, (p, c) -> ParsedStringTerms.fromXContent(p, (String) c));
return map.entrySet().stream().map(entry -> new NamedXContentRegistry.Entry(Aggregation.class, new ParseField(entry.getKey(), entry.getValue()))).collect(Collectors.toList());
}
public static SearchResponse getSearchResponse(String jsonString) {
try {
NamedXContentRegistry registry = new NamedXContentRegistry(getDefaultNamedXContents());
XContentParser parser = new JsonXContentParser(registry, new JsonFactory().createParser(jsonString));
return SearchResponse.fromXContent(parser);
} catch (Exception ex) {
}
return new SearchResponse();
}
我使用以下json调用getSearchResponse(json)方法:
{
"took": 65,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"aggregations": {
"typeAhead": {
"buckets": [
{
"key": "1002312321",
"docCount": 31521
}
]
}
}
}
并获取ParseException:[无法解析键为[typeAhead]]的聚合。
ElasticSearch版本=5.6.15
注:如果有错别字,请忽略。
通过在json中将聚合键作为术语#typeAhead而不是仅使用typeAhead来解决问题。
聚合键应作为aggType#key给出,并且给定聚合类型的条目应在NamedXContent注册表中注册。
我的MongoDB数据库有一个结构 每个a文档都有一个带有bool值vield“result”。我进行聚合选择: 并得到一个结果: 如何计算字段“result”中值“true”和“false”的数量,并得到如下结果:
问题内容: 根据上述问题,我用Val给定的脚本进行的elasticsearch查询在最后一周之前都可以正常工作。我们已经升级了ES版本,但突然停止了工作。 现在突然我的ES停止使用脚本中包含“ as Integer”的代码。任何人都可以检查和帮助。 我尝试了给定的查询,现在它抛出以下异常。 我作为参数传递的查询是: 由于我的索引器在该字段中包含1、2、4、6、14个值。但是执行完此查询后,我只得到
我想在多个字段上进行日期直方图/范围聚合,并将结果存储在其他集合/索引中。因此,我可以在小时范围内使用查询/聚合使doc_count和。 聚合如下: 结果不出所料: 假设我解析了响应,并尝试将结果存储在其他索引/集合中。 存储聚合结果的最佳方式是什么,这样我就可以进行其他查询/聚合,以求和不同小时范围之间的“doc_count”? 例如:在“2016-07-17t00:00.000z”-“2016
问题内容: 有一个对话列表,每个对话都有一个消息列表。每个消息都有一个不同的字段和一个字段。我们需要考虑的是,在对话的第一条消息中使用了动作,在几条消息中使用了动作之后,过了一会儿,依此类推(有一个聊天机器人意图列表)。 将对话的消息动作分组将类似于: 问题: 我需要使用ElasticSearch创建一个报告,该报告将返回每次会话的;接下来,我需要对类似的东西进行分组并添加一个计数;最终将导致as
我正在测试Django 1.6应用程序,需要使用和提供一些指导。我们的Django应用程序具有以下结构: 我们顶部的目录有一个目录,其中包含我们所有的Django应用程序。当我测试完整的应用程序时,我收到了单个应用程序内每个包/模块的巨大覆盖输出。但是,我希望将覆盖结果(语句、未命中、覆盖%)分组到应用级别,而不是单个文件级别。 我能做这个吗? 以下是我的相关要求: