Spring Data弹性命名查询来自外部文件

时间:2017-12-10 11:09:04

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

在我们的项目中,我们需要在外部文件中管理Elasticsearch查询。 我们使用Spring Data Elastic,因此我们可以使用@Query。 但是我不想这样硬编码:

@Query("{"bool" : {"must" : {"field" : {"name" : "?0"}}}}")

我想指出一些外部文件: 我看到@Query有名称参数,但我找不到示例如何运作

这就是我想要的:

application.properties:

my.query = {"bool" : {"must" : {"field" : {"name" : "?0"}}}}

@Query(name = "my.query")

或者可能是我应该指向查询所在文件的名称。 我找到了JPA示例,但是如何用弹性来完成它? 任何帮助将是每个appriciated

1 个答案:

答案 0 :(得分:0)

以与可以使用namedQueriesLocation中的EnableJpaRepositories参数配置查找命名查询属性文件的位置的方式相同,可以在EnableElasticsearchRepositories中使用相同的参数。

另一种选择是使用默认位置文件META-INF/elasticsearch-named-queries.properties

例如:

@Configuration
@EnableElasticsearchRepositories(namedQueriesLocation = "classpath:*-named-queries.properties")
public class ElasticsearchConfiguration {
    ...
}