ES JAVA API在按现有字段

时间:2018-01-31 13:45:30

标签: java elasticsearch reindex

我希望避免在更改字段映射后重新索引所有文档(摘自模板文件):

 "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调用的一部分定义的设置/映射将优先于任何匹配的设置/模板中定义的映射。“

是否可以在不重新索引的情况下做我想做的事情?

0 个答案:

没有答案