gpt4 book ai didi

elasticsearch - Spring Data Elasticsearch 设置注解没有生效

转载 作者:行者123 更新时间:2023-12-02 22:13:54 24 4
gpt4 key购买 nike

我正在尝试使用 spring 数据 Elasticsearch ,并有一个这样定义的类:

@Data
@NoArgsConstructor
@AllArgsConstructor
@Document(indexName = "master", type = "master", shards = 1, replicas = 0)
@Setting(settingPath = "/settings/setting.json")
public class Master {

@Id
private String id;

@MultiField(mainField = @Field(type = FieldType.String, store = true),
otherFields = {
@InnerField(suffix = "autocomplete", type = FieldType.String, indexAnalyzer = "autocomplete", searchAnalyzer = "standard")
}
)
private String firstName;

private String lastName;

}

设置文件在 /src/main/settings/setting.json下,看起来像这样
{
"index": {
"analysis": {
"filter": {
"autocomplete_filter": {
"type": "edge_ngram",
"min_gram": 1,
"max_gram": 20
}
},
"analyzer": {
"autocomplete": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"autocomplete_filter"
]
}
}
}
}
}

我通过首先删除索引来运行我的测试类,然后像这样重新创建索引
    elasticsearchTemplate.deleteIndex(Master.class);
elasticsearchTemplate.createIndex(Master.class);
elasticsearchTemplate.putMapping(Master.class);
elasticsearchTemplate.refresh(Master.class);

但是当我尝试将某些内容保存到索引中时,MapperParsingException 会出现以下错误消息:
2017-10-04 18:56:31.806 ERROR 2942 --- [           main] .d.e.r.s.AbstractElasticsearchRepository : failed to load elasticsearch nodes : org.elasticsearch.index.mapper.MapperParsingException: analyzer [autocomplete] not found for field [autocomplete]

花了 4 个小时试图弄清楚这一点,查看了 Debug模式日志,什么也没有。

我试图通过删除逗号来破坏 JSON 格式,它破坏了 JSON 被解释。

我使用 RestAPI 查询主索引,但设置似乎不包含自动完成分析器或任何分析器。

奇怪的是,即使出现此错误,我的文档也可以保存和查询。但我确实想要这个分析仪。

顺便说一句,如果相关,这是父子关系中的父类。

最佳答案

终于想通了!

我必须使用相同的索引(父级和子级)在所有域中放置相同的设置,然后删除索引,重新启动服务器,它工作了!

关于elasticsearch - Spring Data Elasticsearch 设置注解没有生效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46575930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com