在Spring Boot中,@Setting注释被忽略了 Elasticsearch的设置。

8
在我的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 })

我的主类上的注解。

1个回答

4

你的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"
          ]
        }
      }
    }
  }
}

谢谢你的回答,Val。不幸的是,什么都没有改变。@Setting注释似乎仍然被忽略了。 - Igor Stojanovski
在重新启动应用程序之前,您是否首先删除了索引?Spring Data ES 不会修改现有索引的设置。 - Val
1
干得好!很高兴你做到了。 - Val
1
你好,Steve Taylor,你需要更多的配置来使用json设置吗?因为我只是添加了@Setting注释,即使有一个无效的settingPath,Spring Boot也没有出现错误!当然,我认为Spring Boot没有读取这个设置。 - nguyenbkcse
1
@asgs 是的,很可能是因为它只在索引创建时有用。 - Val
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接