Tag: spring data elasticsearch

Spring Data elasticsearch @Query嵌套对象的注释

我有两节课, @Document public class PracticeQuestion { private int userId; private List questions; // Getters and setters } public class Question { private int questionID; private String type; // Getters and setters } 我的JSON文档是这样的, { “_id” : ObjectId(“506d9c0ce4b005cb478c2e97”), “userId” : 1, “questions” : [ { “questionID” : 1, “type” : “optional” }, { “questionID” : 3, […]

elasticsearch top命中聚合java API查询

我正在运行以下查询,并想要检索每个桶的热门点击量。 但在少数情况下,我看到每个桶有多个文档。 我想每桶只返回一个文件。 有人可以审查查询并建议。 SearchResponse sr=client.prepareSearch(versionIndexName).setTypes(versionIndexType).setQuery(Quer yBuilders.boolQuery().must(QueryBuilders.rangeQuery(“indexDate”).lte(givenTime))) .addAggregation(AggregationBuilders.terms(“form.id”).field(“form.id”).size(0) .subAggregation(AggregationBuilders.topHits(“top”).setExplain(true).setSize(1) .setFrom((size*index)).addSort(SortBuilders.fieldSort(“indexDate”) .order(SortOrder.DESC)).setFetchSource(true))).execute().actionGet(); 查询中的步骤: 按indexDate过滤小于或等于给定日期。 基于formId的聚合。 每个formId形成桶。 按降序排序并返回每个桶的最高命中结果。

如何在Spring-data-elasticsearch中启用查询日志记录

我使用spring-data-elasticsearch框架从elasticsearch服务器获取查询结果,java代码如下: SearchQuery searchQuery = new NativeSearchQueryBuilder() .withQuery(matchAllQuery()).withSearchType(SearchType.COUNT) .addAggregation(new MinBuilder(“min_createDate”).field(“createDate”)) .build(); List list = template.queryForList(searchQuery, Entity.class); 虽然我怎么知道发送到elasticssearch服务器的原始http查询? 如何启用日志记录,我尝试添加log4j,但似乎spring-data-elasticsearch不记录查询。

ElasticSearch仅返回具有不同值的文档

假设我有这个给定的数据 { “name” : “ABC”, “favorite_cars” : [ “ferrari”,”toyota” ] }, { “name” : “ABC”, “favorite_cars” : [ “ferrari”,”toyota” ] }, { “name” : “GEORGE”, “favorite_cars” : [ “honda”,”Hyundae” ] } 每当我在搜索最喜欢的汽车是丰田的人时查询这些数据,它就会返回这些数据 { “name” : “ABC”, “favorite_cars” : [ “ferrari”,”toyota” ] }, { “name” : “ABC”, “favorite_cars” : [ “ferrari”,”toyota” ] } 结果是两个名称为ABC的记录。 如何仅选择不同的文档? 我想得到的结果只是这个 […]

Spring Data Elasticsearch:具有相同文档的多索引

我正在使用spring-data-elasticsearch,一开始一切正常。 @Document( type = “products”, indexName = “empty” ) public class Product { … } public interface ProductRepository extends ElasticsearchRepository { … } 在我的模型中,我可以搜索产品。 @Autowired private ProductRepository repository; … repository.findByIdentifier( “xxx” ).getCategory() ); 所以,我的问题是 – 我在不同的索引中使用相同的Elasticsearch类型,我想对所有查询使用相同的文档。 我可以通过池处理更多连接 – 但我不知道如何实现这一点。 我希望有这样的东西: ProductRepository customerRepo = ElasticsearchPool.getRepoByCustomer(“abc”, ProductRepository.class); repository.findByIdentifier( “xxx” ).getCategory(); 是否可以在运行时使用不同的索引创建存储库? 非常感谢Marcel

Spring-Data-Elasticsearch设置:Spring无法找到配置文件?

使用Spring-Data-Elasticsearch,我试图使用elasticsearch_config.json中定义的分析器和映射。 此JSON文件位于/ src / main / resources文件夹中。 我的JAVA模型看起来像: @Document(indexName = “test”, type=”Tweet”) @Setting(settingPath = “/elasticsearch_config.json”) public class Tweet { @Id private String idStr; /** other fields, getters and setters are omitted **/ } elasticsearch_config.json包含设置和映射: { “settings”: { /* some filters */}, “mappings”: { /* some types’ mappings*/ } } 我尝试使用curl,我没有问题索引/搜索。 我的问题 : 我想使用@Setting来配置我的映射(而不是curl),但@Setting注释似乎不起作用。 使用@Setting ,当我使用curl检查映射时,我没有得到我在elasticsearch_config.json中定义的所有映射: […]

使用Spring-Data Elasticsearch在Elasticsearch中动态创建索引名称

我有一个用例,需要在Elasticsearch中每月创建索引。 我们的想法是在月度基础上创建指数,以便它们易于维护,并且可以在过期时删除。为此我要使用春季批次并且每月工作将创建每月基数的指数对于Elasticsearch -Java集成我使用了Spring-Data Elasticsearch实现。 我现在面临的问题是,我无法弄清楚如何使用Entity对象为索引和映射提供动态名称。 我目前的实施完成时要记住单一索引。 请找到以下用于创建索引的代码 elasticsearchTemplate.createIndex(SingleChat.class); elasticsearchTemplate.putMapping(SingleChat.class); elasticsearchTemplate.refresh(SingleChat.class, true); 而SingleChat是我的实体类 @Document(indexName=”singlemsgtemp_#{jobParameters[‘MONTH’]}”,type=”singlechat”) public class SingleChat { @org.springframework.data.annotation.Id String Id; @Field(type = FieldType.String) String conservationId; @Field(type = FieldType.String) String from; @Field(type = FieldType.String) String to; @Field(type = FieldType.String) String msgContent; @Field(type = FieldType.String) String sessionId; @Field(type = FieldType.Date, index = FieldIndex.not_analyzed, store = true, format […]