以前有一个叫朱伟大神的人跟我聊过,凡是所谓的坑,都是因为你没看他的源码或者文档导致的。 这话听起来有道理,但问题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.



对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!

另外如果大家觉得文章对你有些作用!   帮忙点击广告. 一来能刺激我写博客的欲望,二来好维护云主机的费用.
如果想赏钱,可以用微信扫描下面的二维码. 另外再次标注博客原地址  xiaorui.cc  ……   感谢!

源码分析elasticsearch的pyes bulk批量实现

关于elasticsearch的操作,我一般是使用python elasticsearch库的。 维护他人的代码所以间接的再研究下pyes。 我们的所有业务都是依赖于ElasticSearch...

阅读全文

解决python elasticsearch的TransportError异常问题

解决python elasticsearch的TransportError异常问题 照例先扯闲话,今天的雾霾终于下去了,风很大,身体有些虚.  是时候该锻炼了.  收到elasticsea...

阅读全文

如何使用Elasticsearch groovy script脚本更新数据

今天细说一下elasticsearch的update更新功能,以及如何利用script脚本更新数据。 想要使用script脚本功能,需要在配置文件elasticsearch.yml里设置 ...

阅读全文