嗨我正在使用弹性搜索弹簧数据。我的项目的域结构不断变化。所以我必须删除索引以便每次更改映射。为了克服这个问题,我使用别名。 我创建了使用别名:如何使用弹簧数据与弹性搜索别名进行交互
elasticsearchTemplate.createIndex(Test.class);
elasticsearchTemplate.putMapping(Test.class);
String aliasName = "test-alias";
AliasQuery aliasQuery = new AliasBuilder()
.withIndexName("test")
.withAliasName(aliasName).build();
elasticsearchTemplate.addAlias(aliasQuery);
我有一个测试类:
import org.springframework.data.annotation.Id
import org.springframework.data.elasticsearch.annotations.Document
import org.springframework.data.elasticsearch.annotations.Field
import org.springframework.data.elasticsearch.annotations.FieldIndex
import org.springframework.data.elasticsearch.annotations.FieldType
import org.springframework.data.elasticsearch.annotations.Setting
@Document(indexName = "test", type = "test")
@Setting(settingPath = 'elasticSearchSettings/analyzer.json')
class Test extends BaseEntity{
@Id
@Field(type = FieldType.String, index = FieldIndex.not_analyzed)
String id
@Field(type = FieldType.String, index = FieldIndex.analyzed, indexAnalyzer = "generic_analyzer", searchAnalyzer = "generic_analyzer")
String firstName
}
TestRepository类:
package com.as.core.repositories
import com.as.core.entities.Test
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository
interface TestRepository extends ElasticsearchRepository<Test, String>
{
}
我的问题是如何从别名读取索引,而不是本身? 写操作是否也发生在别名上。 我看了下面的链接: https://www.elastic.co/guide/en/elasticsearch/guide/current/index-aliases.html#index-aliases 它说,我们将不得不互动的别名,而不是实际的索引。如何使用Elasticsearch Spring数据Java API来实现这一目标。
这是一个开放的问题:https://jira.spring.io/browse/DATAES-192 –