spring-data - spring data elasticsearch - 使用配置文件进行设置

标签 spring-data

我正在为我的应用程序使用elasticsearch,这是域实体

@Document(indexName = "bookstore", type = "book", refreshInterval = "-1")
public class Book {
    @Id
    @Column(name = "ID")
    private Long id;

    @Column(name = "NAME")
    @Field(type=FieldType.String)
    private String name;

    @Column(name = "DESCRIPTION")
    private String description;

    @Column(name = "PRICE")
    private Double price;

这是配置文件

@Configuration
@EnableElasticsearchRepositories(basePackages =
"elasticsearch.repo")
public class BookSearchRepositoryTestConfig {

@Bean

public ElasticsearchOperations elasticsearchTemplate() throws IOException {
        return new ElasticsearchTemplate(nodeBuilder()
                .loadConfigSettings(false)
                .local(true)
                .settings(
                ImmutableSettings.settingsBuilder()
                .put("index.store.type", "memory")
                .put("index.number_of_shards", 1)
                .put("index.number_of_replicas", 0).build()
                ).node().client());
}

此设置不起作用。它使用默认设置并创建 5 个分片。

我知道这可以通过使用@Document来完成

@Document(indexName = "bookstore", type = "book", shards = 1, replicas = 0, indexStoreType = "memory", refreshInterval = "-1")

或使用@Setting

@Setting(settingPath = "/settings/elasticsearch-settings.json")

但我尝试使用配置文件并设置属性。 请指导我解决这个问题。

最佳答案

@Bean
public ElasticsearchOperations elasticsearchTemplate() throws IOException {

 Settings settings = ImmutableSettings.settingsBuilder().loadFromClasspath("elasticsearch.yml").build();

        return new ElasticsearchTemplate(nodeBuilder()
                .loadConfigSettings(false)
                .local(true)
                .settings(settings).node().client());
    }

这可行。但我必须将 @Setting(settingPath="/") 添加到域实体。

关于spring-data - spring data elasticsearch - 使用配置文件进行设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23535985/

相关文章:

Spring boot服务启动错误java.lang.NoSuchFieldError : INSTANCE

java - Spring Data Neo4j (SDN) 查询参数不使用转换器

Spring Boot 与 Spring Batch 和 JPA 的集成

java - Spring Data - 按类型进行继承搜索

spring-data - 混合 Spring Data Envers 和 QueryDSL

java - 如何用JPA管理多个实体?

java - 使用自定义查询访问 Spring Repository 中的集合字段

java - 仅在一种用例中延迟加载

java - 如何在 spring-data-rest 中将 Page<ObjectEntity> 映射到 Page<ObjectDTO>

java - Spring boot JPA 如何在@Transient 属性上查询过滤器