【问题标题】:Partial dynamic mapping in elastic search from java来自java的弹性搜索中的部分动态映射
【发布时间】:2018-01-19 18:19:33
【问题描述】:

我需要禁用日期数据类型的动态映射,并且必须在弹性搜索中添加日期数据类型的特定映射。为此

我正在使用代码:

     CreateIndexResponse indexRequestBuilder = transportClient.admin().indices().prepareCreate(index_name).setSettings(
                        settings).addMapping(index_name, createMappingBuilder(index_name)).execute().actionGet();

        private static XContentBuilder createMappingBuilder(String typeName)
                  throws IOException
          {
            XContentBuilder builder = jsonBuilder().startObject().startObject(typeName).
    startObject("mappings").startObject(typeName).field("dynamic_date_formats","[\"dd/MM/yyyy\"]")
.endObject().endObject().endObject().endObject();

            return builder;
          }

运行此代码后,我得到了异常:

MapperParsingException[根映射定义不受支持 参数:[映射: {index_name={dynamic_date_formats=["dd/MM/yyyy"]}}]];

弹性版本:2.4

任何更新都会有所帮助。 提前致谢。

【问题讨论】:

  • 我通过从 json 中删除根级别解决了这个问题。代码片段更改为:我将代码更改为 XContentBuilder builder = jsonBuilder() .startObject().startObject(typeName).field("dynamic_date_formats","dd/MM/yyyy").endObject().endObject();但这提出了一个问题。早些时候,只要我将数据持久化到弹性中,我就能够查询该数据。但上述变化,一段时间后我得到了搜索结果。

标签: java elasticsearch


【解决方案1】:

问题已按照评论中的说明得到解决,我在评论中提到的另一个问题已通过 refreshindex 调用解决

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    相关资源
    最近更新 更多