如果实体索引是基于时间的,如何使用ElasticsearchEntityMapper?

问题描述 投票:0回答:1

我们知道,ElasticsearchEntityMapper的每个实体都需要注释

@Document(indexName="foo")
public class Foo {...}

,以便我们可以使用方便的方法,例如:

<T> Page<T> queryForPage(SearchQuery query, Foo.class);

但是很普遍,elasticsearch的索引是基于时间或基于语言的。即

@Document(indexName="2019")
public class Foo {...}

@Document(indexName="2020")
public class Foo {...}

@Document(indexName="english")
public class Foo {...}

@Document(indexName="german")
public class Foo {...}

当然,我们不能创建这样的类,一个具有不同索引的类。在这种情况下我们该怎么办? Foo2019,Foo2020每个指标一类?

我想知道,为什么spring-data-elasticsearch这样设计实体?它不是很灵活。还是我误会了用法?

谢谢您的帮助! :)

elasticsearch spring-data-elasticsearch
1个回答
0
投票

您是正确的,将它与修订字符串一起使用并不灵活。

但是您也可以使用SpEL表达式作为索引名称。当使用ElasticsearchOperations方法而不是存储库方法时,您可以传入索引的名称,这将覆盖@Document注释中定义的名称。

© www.soinside.com 2019 - 2024. All rights reserved.