大数据ElasticSearch遇到ignore_above问题

    以前有一个叫朱伟大神的人跟我聊过,凡是所谓的坑,都是因为你没看他的源码或者文档导致的。 这话听起来有道理,但问题ElasticSearch的各种文档很是乱,刚接触他的人只看es的dsl语句就会郁闷住的,不用说更深层的文档。  ElasticSearch的更新算是频繁,但我还在使用旧版的1.4,测试环境用2.0.   跟朱伟( 伟哥 )学了不少东西, 今下午跟他把logging过了一遍,收获很大. 

不扯闲话了,正题开始.


该文章写的有些乱,欢迎来喷 ! 另外文章后续不断更新中,请到原文地址查看更新。  http://xiaorui.cc/?p=3151

第一个问题是:


这里用的是python pyes库,当我批量写入elasticsearch的时候 nginx给我返回413的操作。 nginx 413的错误,一般在上传文件的时候出现. 我这边问题肯定是一次request批量过大导致的.

如果不想修改程序,那么可以针对413的问题进行调参.


下面是nginx的错误.

第二个问题, 也跟size大小有点关系。 上面是request body太大,都尼玛200M+了。 ” whose UTF8 encoding is longer than the max length 32766 “, 这个问题是某个字段size过大不能索引引起的。 

下面是python的报错,后面会说明这个原因. 


下面是pyes异常.


下面是ElasticSearch服务端的报错.


在stackoverflow看到解决的方法: 分词要关闭,另外ignore-above 为 256, 这样可以存储超过37266字节的数据。 

index是什么? 他有下面三个选项

ignore_above是啥?

ignore_above是索引的范围,用于not_analyzed字段,默认不会对20字节的数据索引。 

另外他还有一个用处,如果要存储超过32766字节的数据,那么ignore_above = 256就可以了。  

我们在1.7下做过ignore_above参数的测试,当字段是not_analyzed ignore_above 256时,可以存入超过32766字节的数据. 

下面是一个参考的mapping

下面是官方ignore-above:

https://www.elastic.co/guide/en/elasticsearch/reference/current/ignore-above.html

END.


对Golang感兴趣的朋友可以加群: 278517979 !!!
另外如果大家觉得文章对你有些作用! 如果想赏钱,可以用微信扫描下面的二维码, 感谢!
另外再次标注博客原地址  xiaorui.cc

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">