elasticsearch6.6版本 es填坑之路 : the final mapping would have more than 1 type(解-决-方-案!!!)

困扰了2天的问题, 莫名其妙设置了一个叫做 default的 type,结果后面一直报这个错,建索引会报,设置mapping会报,使用logstash导入数据会爆 ,删除type再设置还会报;

我的场景是这样子的,新安的服务6.6,没有任何索引,安装了logstash,然后利用它将数据从mysql导入到es中,

logstash的conf如下:

logstash启动的时候会看到它使用的template是默认的,然后这样导入的数据后,自动创建了索引 index005  默认的_type 是doc,即:logstash在同步的时候会自动创建一个doc类型的index !!!  原因在此。

默认的mapping 是这样的

type为keyword的不会分词。

如果你的情况跟我的一样,那么下面是我的解决方法:

首先 删除之前的旧索引;

从新建立一个索引,并直接设置它的mapping(一个动作):

 

其实默认mapping里面的type 是 doc, 上面操作的含义可以理解为把所有的类型都映射为string,里面type为text 分词为ik

然后再使用logstash导入数据后,发现mapping变成了这样,

便可以分词搜索了;

搞的我头都大了,删除了索引 那个mapping还在,网上也找到了很多,都说什么6版本不支持多type呀,大家都知道了 还有啥可说的,解决办法倒没人讲出来了。。。另外 对于type概念相当于 mysql的 table概念,是个错误的说法,官方给出说明,不要记错了。

删除type的方法:

POST /tableindex/default/_delete_by_query?conflicts=proceed
{
  "query": {
    "match_all": {}
  }
}

确实可以删除type,但是mapping还是去不掉;

此方法参考的是官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/6.0/dynamic-templates.html

有什么问题可以在下方评论,转载请注明出处,多谢!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值