【发布时间】: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