大数据统计分析 如何解决elasticsearch在大数据中应用的精确度问题
沉沙 2018-09-29 来源 : 阅读 1781 评论 0

摘要:本篇教程介绍了大数据统计分析 如何解决elasticsearch在大数据中应用的精确度问题,希望阅读本篇文章以后大家有所收获,帮助大家对大数据云计算大数据分析的理解更加深入。

本篇教程介绍了大数据统计分析 如何解决elasticsearch在大数据中应用的精确度问题,希望阅读本篇文章以后大家有所收获,帮助大家对大数据云计算大数据分析的理解更加深入。


  一)精确搜索
  因为做的是数据分析的问题,所以搜索是一个精确查找的问题,当然不能使用联想搜索法,于是很自然的干掉分词法,但是我们知道,es自带smartcn分词法,也就是说不管如何,它都会给你分词,这可不是我想要的,放眼网上一看,都是如何使用第三方分词法替代es自己的分词法,像我这样的需求还真不好找。经过到大半夜的摸索,源码在手,何惧之有?找出三个解决办法:
  1)删掉文件:不同es版本文件位置不一样,直接搜索smartcn删除所有相关分词文件,当然有风险。
  2)创建序列的时候声明不分词:我们在创建es索引的时候,都是startObject()的方法,于是我们在里面增加filed,声明index为
not_analyzed,则能不使用分词,当然这个也有弊端,那就是如果有一天需要分词的时候,就需要重新创建索引了。
  3)修改输入:这个方法乃上上之策,也是非常非常简单,那就是在es里面,如果你的字符串是被双引号括起来,那么es就认为是一个原子,不会被分词,也就是我们需要转义引号,一起作为搜索字符串传递给es,这个简单点办法,发现之后我居然仰天长啸,你个二b es,这个神气你居然藏着掖着。
  二)es的filter
  es的fiter着实让我纠结,由于时间有限,我需要在实现not的搜索,也就是不包含某个结果,我们知道在es里面使用queryBuilder条件去设定过滤条件,会出现长度溢出,最好的做法当然是filter,于是很自然的创建了filter:
  
BoolFilterBuilder notFilter = FilterBuilders.boolFilter().mustNot(FilterBuilders.termsFilter("body", "fedde").cache(false));
  在es里面的filter有两类,not,or,and等这一类,还有一类是bool等这一类,他们的区别就是是否会使用es内部核心大数组,在性能下优先考虑bool类,因为它会使用内部数组,这个filter有个核心的坑就是仅仅只有body完全等于输入字符串的时候,才能被not,我觉得es不会没有解决这个问题,或许是我没有发现,时间有限,直接手动修改hits。。
  三)es的and
  我们在实现es的and功能的时候,一般也是建立filter,并且es内部提供了and操作,我们理想的and操作就是将我们的多个输入得到并结果,于是filter的建立如下:
  
QueryFilterBuilder queryFilterBuilder = FilterBuilders.queryFilter(QueryBuilders.multiMatchQuery(value, eachStringQueryRequest.getQueryFiled()).operator(MatchQueryBuilder.Operator.AND).minimumShouldMatch(Global.MARCHPERCENT));
  但是结果却始终不正确,都是or的结果,于是我一度恼火,后来发现这个坑,妈蛋的,multiMatchQuery这个方法传递两个参数,一个是object的输入,一个是可变长的es的filed的名字,原来es的and,是and它的可变长filed,而不是我们自己的多个输入。
  四)感悟
  所谓数据分析挖掘,自己的感觉就是从同一个通道进去,每个人根据自己不同的角色,配置不同的工作流,从数据源里面产生自己需要的分析报告,所有人用的四同一个数据同一个通道,但是根据不同的需求,能够产生不同的结果,就是这么简单。。。
     

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标大数据云计算大数据分析频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程