我希望从ES中获得聚合结果,例如,对于与术语匹配的文档,avgSize(名称为“size”的字段的平均值)、
totalhits,以及将来的一些其他聚合,我认为ElasticsearchRepository没有任何方法可调用。我构建了查询和聚合生成器,如下所示。我想使用我的存储库接口,但我不确定返回的ObjectType应该是什么?它应该是我的DTO中的文档类型吗?此外,我还看到了一些示例,其中searchQuery直接传递给ElasticsearchTemplate,但是拥有扩展ElasticsearchRepository的存储库接口有什么意义
存储库界面
public interface CCFilesSummaryRepository extends ElasticsearchRepository<DataReferenceSummary, UUID> {
}
弹性配置
@Configuration
@EnableElasticsearchRepositories(basePackages = "com.xxx.repository.es")
public class ElasticConfiguration {
@Bean
public ElasticsearchOperations elasticsearchTemplate() throws UnknownHostException {
return new ElasticsearchTemplate(elasticsearchClient());
}
@Bean
public Client elasticsearchClient() throws UnknownHostException {
Settings settings = Settings.builder().put("cluster.name", "elasticsearch").build();
TransportClient client = new PreBuiltTransportClient(settings);
client.addTransportAddress(new TransportAddress(InetAddress.getLocalHost(), 9200));
return client;
}
}
服务方式
public DataReferenceSummary createSummary(final DataSet dataSet) {
try {
QueryBuilder queryBuilder = QueryBuilders.matchQuery("type" , dataSet.getDataSetCreateRequest().getContentType());
AvgAggregationBuilder avgAggregationBuilder = AggregationBuilders.avg("avg_size").field("size");
ValueCountAggregationBuilder valueCountAggregationBuilder = AggregationBuilders.count("total_references")
.field("asset_id");
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(queryBuilder)
.addAggregation(avgAggregationBuilder)
.addAggregation(valueCountAggregationBuilder)
.build();
return ccFilesSummaryRepository.search(searchQuery).iterator().next();
} catch (Exception e){
e.printStackTrace();
}
return null;
}
DataReferernce摘要
现在只是一个POJO,我在构建过程中收到一个错误,上面写着无法构建Bean CCFilesSummaryRepository, illegalArgumentException DataReferernceSummary。不是一个amanged对象
首先,数据引用摘要必须是一个用文档注释的类。
在Spring Data Elasticsearch 3.2.0(当前版本)中,需要将存储库返回类型定义为聚合页面
从即将发布的4.0版开始,您必须将返回类型定义为SearchHits
我正在使用Spring Elasticsearch chRepository来查询Elasticsearch: 我可以成功运行搜索查询并检索映射到MyDocument bean中的elasticsearch结果列表 虽然发送到elasticsearch和响应的查询是正确的(我可以在调试日志中看到突出显示块)并且结果也合适,但我不知道如何在我的java代码中获取突出显示信息。 我不想使用Elasti
我尝试使用下面的elasticsearch查询来处理Spring数据。目的是为字段返回唯一的结果。就像与SQL数据库进行比较一样。 我将该字段配置为关键字,它使查询在api中完美运行,如下所示: 我的问题是,当我尝试使用StringQuery运行时,相同的查询在Spring数据中不起作用,我得到以下错误。我猜它使用不同的api来运行查询。 我尝试过使用类型来实现相同的结果,没有重复和没有对象加载,
框架集合由搜索查询选择的所有数据。框架中包含许多构建块,有助于构建复杂的数据描述或摘要。聚合的基本结构如下所示 - 有以下不同类型的聚合,每个都有自己的目的 - 指标聚合 这些聚合有助于从聚合文档的字段值计算矩阵,并且某些值可以从脚本生成。 数字矩阵或者是平均聚合的单值,或者是像一样的多值。 平均聚合 此聚合用于获取聚合文档中存在的任何数字字段的平均值。 例如, 请求正文 响应 如果该值不存在于一
我参考的是Spring Data Elasticsearch 它们似乎是实现相同目标的两种不同API,但我不确定这两种类型之间有什么区别,更重要的是何时使用哪种。 有人能提供建议和指导吗?
我有以下内容:我注意到在运行代码的末尾,如果我打印出aggregations.asMap(). get('subject');我得到:org.elasticsearch.search.aggregations.bucket.terms.StringTerms@6cff59fa 打印出“聚合”给了我:org.elasticsearch.search.aggregations.InternalAggr
我想在我的java应用程序中获得聚合。 首先,我用curl构造了REST查询。它看起来像: 结果和我预期的一样 之后我在java中创建了一些代码 问题是: 如何获取当前bucket项的“contract\u sum”聚合值? 当我在IntelliJ Idea中使用调试工具时,它似乎可以 请帮助我的代码示例。