栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用Spring数据与elasticsearch别名进行交互

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用Spring数据与elasticsearch别名进行交互

我通过在与对象相关联的存储库类中使用ElasticsearchTemplate来解决了这一限制(尽管如果有一种在实体本身上指定别名的方法会更好)。

它的工作方式是创建自定义存储库界面。在您的情况下,将为TestRepositoryCustom:

public interface TestRepositoryCustom{    Test> findByCustom(...);}

然后实现此接口,在基本存储库名称的末尾附加“ Impl”:

public class TestRepositoryImpl implements TestRepositoryCustom{    Page<Test> findByCustom(Pageable pageable, ...)    {        BoolQueryBuilder boolQuery = new BoolQueryBuilder();        FilterBuilder filter = FilterBuilders.staticMethodsToBuildFilters;                NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder().withQuery(boolQuery).withFilter(filter).withPageable(pageable);        //These two are the crucial elements that will allow the search to look up based on alias        builder.withIndices("test-alias");        builder.withTypes("test");        //Execute the query        SearchQuery searchQuery = builder.build();        return elasticSearchTemplate.queryForPage(searchQuery, Test.class);    }}

最后,在基本的JPA代理接口TestRepository中,扩展TestRepositoryCustom接口,以从存储库bean访问自定义接口上的任何方法。

public interface TestRepository extends ElasticsearchRepository<Consultant, String>, TestRepositoryCustom{}

我真正想看到的是对实体的注释,例如:

@document(aliasName="test-alias")

这只会在后台工作,以提供对这个索引的搜索,因此无论索引名如何,所有jpa查询都将正常工作。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/377464.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号