使用带有@Document 的 Spring-Data Elasticsearch 动态创建索引名

Posted

技术标签:

【中文标题】使用带有@Document 的 Spring-Data Elasticsearch 动态创建索引名【英文标题】:Creating Indexname Dynamically using Spring-Data Elasticsearch with @Document 【发布时间】:2016-11-01 00:28:33 【问题描述】:

我正在尝试在

中动态获取indexname
@Document(indexName="Something",type="type")

我尝试过使用以下代码:

@Document(indexName="#systemProperties['databaseName'] ", type = "dbtype")

但在运行时,当我从 UI 发送两个请求以从不同索引的 ES 获取数据时,它无法正常工作。

我应该怎么做才能解决这个问题?

【问题讨论】:

【参考方案1】:

一种解决方法是使用 NativeSearchQuerries。 在那里您可以将索引设置为您喜欢的任何内容:

NativeSearchQuery query = new NativeSearchQueryBuilder().withIndices(indexName)
                .withQuery(QueryBuilders.matchPhraseQuery("_all", request.getSearchTerm().getSearchString()))
                .withPageable(new PageRequest(request.getPaging(), request.getMaxResults()))
....
                .build();
        result =elastic.query(query, query->query2Result(query));

【讨论】:

最新版本中没有withIndices - docs.spring.io/spring-data/elasticsearch/docs/current/api/org/…

以上是关于使用带有@Document 的 Spring-Data Elasticsearch 动态创建索引名的主要内容,如果未能解决你的问题,请参考以下文章

使用带有 document() 的副本将 SVG 添加到 XHTML 输出

如何使用 .submit() 提交带有 document.forms 对象的表单

找不到带有 document.querySelector 的 atag 链接

document.getElementById 带有循环和本地与全局变量

UserModel 不可分配给 Document | 类型的参数nulll [带有 Typescript 的猫鼬]

带有完整查询字符串的 Javascript document.referrer