为了提高python elasticsearch的调用性能,从各方面都要小心注意。首先是在大量数据查询及导数的时候,要尽量的精简下返回的结果,去除那些不需要的字段。

在通过elasticsearch查询数据时候,不想显示所有字段,就在request Dsl请求语句里面增加了fields字段进行控制,结果遇到提示 isn’t a leaf field 的问题。

文章写的不严谨,后续有更新 ! 这里标注下原文地址 :

http://xiaorui.cc/2015/11/05/%E4%BD%BF%E7%94%A8elasticsearch%E7%9A%84fields%E5%92%8Cpartial_fields%E8%87%AA%E5%AE%9A%E4%B9%89%E9%99%90%E5%88%B6%E5%AD%97%E6%AE%B5/


一开始以为这可能是elasticsearch的小bug ,所以直接在github中提交了issue ,https://github.com/elastic/elasticsearch/issues/14542 ,有些尴尬呀….

凡事遇到问题先别定结论,还是老老实实地看文档吧… 在elasticsearch官方文档里面抽取了两个关于fields的例子。

fields可以是列表。 

partial_fields的功能有些类似_source过滤嵌套的字典。 但显然partial_fields更加的强大,他可以控制字典的显示的层级。

还原下出错的经过.  话说在2.0的文档上,没找到有关_source讲述.


如何解决这个问题…


ElasticsearchIllegalArgumentException[field [keyword] isn’t a leaf field]  的意思是说,keyword这个字段是个叶子节点,fields不支持非叶子节点。 

简单的说,如果一个字段是嵌套的情况,我们不能使用fields来控制字段显示,可以使用_source和partial_fields,新版的elasticsearch推荐使用partial_fields.

END… …



对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!
{ 2000人qq大群内有各厂大牛,常组织线上分享及沙龙,对高性能及分布式场景感兴趣同学欢迎加入该QQ群 }

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

1则回应给“使用elasticsearch的fields和partial_fields自定义限制字段”

  1. 游客说道:

    还是我ddos你吧 ,你签名好牛 逼

发表评论