从嵌入式 ElasticSearch 迁移到 spring-data-elasticsearch 4.0.6.RELEASE

Migration from Embedded ElasticSearch to spring-data-elasticsearch 4.0.6.RELEASE

我正在做一个小项目,需要迁移到更新的 Spring 版本。

我在修复此查询时遇到问题:

SearchResponse response = new SearchRequestBuilder(node.client())
    .setIndices(INDEX)
    .setTypes(TYPE_MYCLASS)
    .setFrom(page * PAGE_SIZE)
    .setSize(PAGE_SIZE)
    .setQuery(
        new FilteredQueryBuilder(
            new MatchAllQueryBuilder()
            , new TermFilterBuilder("mostRecent", true)
        )
    )
    .get();

SearchHit[] hits = response.getHits().getHits();

我已经将 DTO-Class (TYPE_MYCLASS) 迁移到 Spring-数据文档注释

@Mapping(
    mappingPath = "es/mappings/myclass.json")
@Document(
    indexName = ElasticsearchService.INDEX
    , type = ElasticsearchService.TYPE_MYCLASS)
public class MyClass {
    public Boolean mostRecent;
    // other Fields
}

希望高手能帮帮我。

当您使用 spring-data 时,您通常会定义存储库来查询数据。 它还支持简单的查询。

看看这个: https://www.baeldung.com/spring-data-elasticsearch-tutorial

这是我最终所做的,类似于我在另一条评论中提供的 the link 到 spring 文档。

NativeSearchQuery query = new NativeSearchQueryBuilder()
    .withQuery(QueryBuilders.matchAllQuery())
    .withFilter(QueryBuilders.boolQuery().must(QueryBuilders.termQuery("mostRecent", true)))
    .build();

SearchHitsIterator<Produkt> stream = template.searchForStream(query, MyClass.class);

不幸的是,使用分页以错误消息告终。希望这会在未来的某个版本中得到修复。