我希望避免在更改字段映射后重新索引所有文档(摘自模板文件):
"subject": {
"type": "string"
},
到
"subject": {
"type": "string",
"fields": {
"sort": {
"type": "string",
"analyzer": "ducet_sort_subject"
},
"sortConversation": {
"type": "string",
"analyzer": "ducet_sort_subject_conversation"
}
}
},
java代码最新版本如下:
PutMappingResponse putMappingResponse = client.admin().indices().preparePutMapping(indexName)
.setSource("{\"properties\": {}}").setType("email").execute().actionGet();
BulkIndexByScrollResponse bulkIndexByScrollResponse = INSTANCE.newRequestBuilder(client).source(indexName).get();
请注意,没有unmappedType默认值,所以如果找不到映射,我希望看到一些错误,(因为它没有这些行)。 相反,我也得到了未编制索引的文档的结果,但顺序是随机的。
我还尝试在setSource中手动添加映射,但结果没有改变。
在文档中,我读了两个似乎形成鲜明对比的陈述:
“_update_by_query的最简单用法只是对索引中的每个文档执行更新而不更改源。这对于获取新属性或其他一些在线映射更改很有用。”
和
“模板仅在索引创建时应用。更改模板对现有索引没有影响。使用create index API时,作为create index调用的一部分定义的设置/映射将优先于任何匹配的设置/模板中定义的映射。“
是否可以在不重新索引的情况下做我想做的事情?