当前位置:  开发笔记 > 前端 > 正文

Elasticsearch - 如果字段具有相同的名称但具有多个映射,该怎么办

如何解决《Elasticsearch-如果字段具有相同的名称但具有多个映射,该怎么办》经验,为你挑选了0个好方法。

我使用Elasticsearch来存储从我的系统外部的多个源发送的数据,即我不控制传入的数据 - 我只是接收json文档并存储它.我的中间没有过滤器,只有ES和Kibana.每个数据源都发送自己的数据类型,并且所有数据都存储在相同的索引(每个租户)中,但存储在不同的类型中.但是,由于我无法控制发送给我的数据,因此可以使用具有相同名称和不同结构的字段接收不同类型的文档.
例如,假设我有带字段FLD的type1和type2,它在两种情况下都是一个对象,但该对象的结构不相同.具体来说,FLD.name是type1中的字符串字段,但是type2中的对象.在这种情况下,当type1数据到达时,它会成功存储,但是当type2数据到达时,它会被拒绝:

未能将索引[[myindex]]上的映射,类型[type2]
java.lang.IllegalArgumentException:[FLD]的Mapper与其他类型的现有映射冲突[无法将非对象映射[FLD.name]与对象映射[FLD.name]]

ES文档明确声明在不同映射类型的同一索引中具有相同名称的字段在内部映射到同一字段,并且必须具有相同的映射(请参见此处).

我的问题是在这种情况下我该怎么办?我宁愿将所有类型保留在同一索引中.是否可以为字段名称或类似的东西添加每个类型的唯一后缀?还有其他方法吗?我是Elasticsearch的新手,所以也许我错过了一些简单的事情......提前谢谢.

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有