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



正如我们所知,ElasticsearchEntityMapper的每个实体都需要注释

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

,这样我们就可以使用方便的方法,比如:

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

但弹性搜索的索引通常是基于时间或语言设计的。即

@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数据会以这种方式弹性搜索设计实体?它不是很灵活。或者我误解了用法?

提前感谢您的帮助!:(

您是对的,将其与修复字符串一起使用是不灵活的。

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

相关内容

  • 没有找到相关文章

最新更新