我正在尝试使用以下映射在 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/