是否可以使用弹簧数据动态删除 Elasticsearch 上字段的索引?

分享于2022年07月17日 elasticsearch indexing spring-data-elasticsearch 问答
【问题标题】:是否可以使用弹簧数据动态删除 Elasticsearch 上字段的索引?(Is It possible to dynamically remove indexing on a field on Elasticsearch using spring data?)
【发布时间】:2022-01-18 13:03:44
【问题描述】:

在构建索引时,我需要对 Elasticsearch 索引的所有字段进行索引,但一段时间后,如果需要,将 index 值更改为 false 并通过从某些字段中删除索引来提高性能。

当我搜索时,阅读 docs 并使用 spring 数据对其进行测试,当我在 @Field 中建立索引后设置 index = false 时没有任何变化,并且该字段仍然可以搜索。

@Document(indexName = "book")
@Setting(refreshInterval = "30s", shards = 3)
class Book(
    @Id
    @Field(type = FieldType.Keyword)
    var id: String? = null,
    
    @Field(type = FieldType.Keyword )
    var title: String? = null,
    
    @Field(type = FieldType.Keyword,index = false)
    val isbn: String)

我想知道是否有另一种解决方案可以在使用spring数据构建索引后动态更改字段的索引?


【解决方案1】:

您需要使用新索引名称运行修改后的程序,以使用调整后的映射创建新索引,然后手动从旧索引重新索引到新索引: Elasticsearch documentation about reindexing