java - Elasticsearch Java : Root type mapping not empty after parsing

标签 java elasticsearch mapping

我正在尝试使用以下映射在 elasticsearch 中索引文档:

{"thread": {"properties":{"message":{"type": "nested", "properties": {"message_id": {"type":"string"}, "message_text":{"type":"string"}, "message_nick":{"type":"string"}}}}}}

然后使用它在 Java 中添加映射:

CreateIndexRequestBuilder indexRequest = client.admin().indices().prepareCreate(INDEX).addMapping("message", mapping);

但我收到以下错误:

Caused by: org.elasticsearch.index.mapper.MapperParsingException: Root type mapping not empty after parsing! Remaining fields:   [mappings : {thread={properties={message={properties={message_text={type=string}, message_nick={type=string}, message_id={type=string}}, type=nested}}}}]

任何人都可以告诉我如何收到此错误吗?

最佳答案

我不知道您的确切映射的详细信息,但我遇到了类似的问题,并且刚刚意识到当您通过 java API 添加映射时,您需要删除根目录正下方的 json 对象。

例如,我尝试添加的映射是:

{"mappings":{"_default_":{"date_detection":false,"dynamic_templates":[{"dates":{"match":".*Date|date","match_pattern":"regex","mapping":{"type":"date"}}}]}}}

上面使用 REST API 添加了很好的内容,但使用 Java API 失败了,并出现了您提到的相同错误。

我删除了“mappings”json 对象并解决了问题。最终有效的映射是:

{"_default_":{"date_detection":false,"dynamic_templates":[{"dates":{"match":".*Date|date","match_pattern":"regex","mapping":{"type":"date"}}}]}}

关于java - Elasticsearch Java : Root type mapping not empty after parsing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29304374/

相关文章:

java - 链表中的空指针异常

python - 如何通过Python TypeError更新或插入Elasticsearch?

python - 推进 basemap 绘图

java - 从枚举返回一个值

java - 如何在 Spring 应用程序上下文中添加新行作为 map 值

php - Elasticsearch for laravel-获取与一个或多个类别匹配的文档?

elasticsearch - 字段如何与elasticsearch中倒排索引中的术语相关联?

java - 交换 HashMap 中特定的<key,value>集

mapping - 如何获得特定地标的纬度和经度?

java - 通过自定义 Spring validator 处理绑定(bind)到输入字段的长值是否太晚了?