【问题标题】:All methods in the `ElasticsearchRepository` are deprecated. What should do I use?`ElasticsearchRepository` 中的所有方法都已弃用。我应该使用什么?
【发布时间】:2021-03-07 03:43:57
【问题描述】:

我有这个问题:

NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
                .withQuery(multiMatchQuery(searchPattern)
                        .field("fullName")
                        .field("npi")
                        .type(MultiMatchQueryBuilder.Type.BEST_FIELDS))
                .build();

如何运行它? ElasticsearchRepository 中的所有方法都已弃用:

public interface ElasticsearchRepository<T, ID> extends PagingAndSortingRepository<T, ID> {
    /** @deprecated */
    @Deprecated
    default <S extends T> S index(S entity) {
        return this.save(entity);
    }

    /** @deprecated */
    @Deprecated
    <S extends T> S indexWithoutRefresh(S var1);

    /** @deprecated */
    Iterable<T> search(QueryBuilder var1);

    /** @deprecated */
    Page<T> search(QueryBuilder var1, Pageable var2);

    /** @deprecated */
    Page<T> search(Query var1);

    Page<T> searchSimilar(T var1, @Nullable String[] var2, Pageable var3);

    /** @deprecated */
    @Deprecated
    void refresh();
}

【问题讨论】:

    标签: spring elasticsearch spring-data spring-data-elasticsearch


    【解决方案1】:

    不推荐使用的方法的 Javadoc 声明您应该

    • 要么使用标准方法名称派生定义查询,如 findByName
    • 或使用带有查询字符串的@Query 注释
    • 或者不使用存储库接口而是使用ElasticsearchOperations 来传递您的自定义Query 派生查询。

    我们弃用了存储库接口中使用Queryclasses 的方法。不仅在 Spring Data Elasticsearch 中,我们也不会在其他模块中引入它们;请参阅comment on this Spring Data Mongo issue 了解更多信息。

    【讨论】:

    • 好的。我需要得到这个查询:"fields" : [ "fullName^1.0", "npi^1.0" ], How can do it with @Query annotation or ElasticsearchOperations ?
    • 在 ElasticsearchOperations 中几乎所有的方法都被弃用了。我没有找到示例(只有关于 NativeSearchQuery 的旧示例)
    • ElasticsearchOperationshas searchQuery 作为参数的方法。 ElasticsearchOperations 中的哪些方法被弃用了?
    • org.springframework.data.elasticsearch.core.ElasticsearchOperations 没有 search 方法。我不明白你建议什么课
    • ElasticsearchOperations 扩展了SearchOperations,因此有这个方法:github.com/spring-projects/spring-data-elasticsearch/blob/…。所以你让注入一个ElasticsearchOperations对象并使用它的search方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 2019-08-28
    • 2010-09-17
    相关资源
    最近更新 更多