elasticsearch - Elasticsearch 的 @Setting 注解在 Spring Boot 中被忽略

标签 elasticsearch spring-boot spring-data-elasticsearch

在我的 Spring Boot 应用程序中,我有一个指向设置 JSON 文件的 @Setting 注释,但它似乎被完全忽略了。

@Setting(settingPath = "/settings/elasticsearch-settings.json")
@Document(indexName = "hermes", type = "client", shards = 1, replicas = 0, refreshInterval = "-1")
public class Client {

    @Id
    private String externalId;
    private String name;
    private String surname;
    private String taxNumber;
    private String uid;

    //getters and setter intentionally left out
}

我的设置文件放在:

src/main/resources/settings/elasticsearch-settings.json

文件内容如下:

{
  "analysis": {
    "analyzer": {
      "my_ngram_analyzer": {
        "tokenizer": "my_ngram_tokenizer"
      }
    },
    "tokenizer": {
      "my_ngram_tokenizer": {
        "type": "nGram",
        "min_gram": "2",
        "max_gram": "3",
        "token_chars": [
          "letter",
          "digit"
        ]
      }
    }
  }
}

当我使用 Elasticsearch REST api 运行它时,它会毫无问题地更改设置,所以我猜 JSON 本身是有效的。但即使我输入了无效的 JSON,或者将文件全部删除,我也什么也得不到,没有来自 Spring 的警告或错误。这就是为什么我猜测注释被完全忽略的原因。

如果它可能与此有关,我还有一个 Elasticsearch 配置类,用于在端口 9200 上公开客户端。它注释为:

@EnableConfigurationProperties(ElasticsearchProperties.class)

还有:

@EnableAutoConfiguration(exclude= { ElasticsearchAutoConfiguration.class })

关于我的主类的注释。

最佳答案

您的 elasticsearch-settings.json 文件缺少 index 元素。试试这样:

{
  "index": {
    "analysis": {
      "analyzer": {
        "my_ngram_analyzer": {
          "tokenizer": "my_ngram_tokenizer"
        }
      },
      "tokenizer": {
        "my_ngram_tokenizer": {
          "type": "nGram",
          "min_gram": "2",
          "max_gram": "3",
          "token_chars": [
            "letter",
            "digit"
          ]
        }
      }
    }
  }
}

关于elasticsearch - Elasticsearch 的 @Setting 注解在 Spring Boot 中被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38550382/

相关文章:

json - Elasticsearch 将用户输入存储为 JSON 文档

java - Elastic Search java (spring) 索引问题

sorting - 找不到字段的映射以便在 ElasticSearch 中排序

elasticsearch - Elasticsearch 聚合和详细信息

Java堆内存持有大字节数组

spring - 如何使用 Spring Boot 发送通知 (FCM)

elasticsearch - 如何通过 JSON 将查询设置为 Elasticsearch SearchRequest?

elasticsearch - Elasticsearch 和Spark

java - 将异常捕获到 Spring Job 中

java - Spring Data Elasticsearch是否支持日期字段的多种日期格式