ES社区技术分享会

在前段时间加班的时候错过了两场我想去的技术会,这次终于没落空了。大佬也多,涨了不少姿势。特此记录一下分享,由于全凭记忆叙述,可能就没啥顺序而言的还原出之前的收获。

目前项目中目前涉及到了elasticsearch不多,索引都才几个。看到别人分享的都是2千,4-5千的索引量。而且数据量大的话才更能体现出elasticsearch的作用。

周金阳 果壳网/在行 算法工程师

算法果然是大佬,让es与深度学习结合起来在搜索这块已经走在很多公司的前面了吧。

使用 ES 来构建一个简易却行之有效的个性化推荐系统,以及一些高级搜索排序的实践。

搜索排序主要是分享一些机器学习工具与 ES 配合的实践心得。

思考一个问题,如果是这样的你会选择怎么排序

若输入的值和被检索到的结果呈线性变化g(q,x)很明显,第一个是用户测试的或者是胡乱写的,当用户输入“引力波”的时候,如何控制类似于这种情况让正常的显示在前。这种情况,就可以加一些其他的限制条件f(x),比如1得出来的期望值为15.42,2得出来的期望值为87.93,这样关于g(q,x) -> f(x)*g(q,x)

当然如果要做的好的话需要优化的还有很多,比如用BiLSTM+CNN 期望后期会用到这些吧,毕竟我觉得这是偏离业务而且是和大数据接轨的之一。

其中,在使用es的时候有一些规范和约束,

业务索引尽量自定义id,数据敏感业务自备插入修改时间

一个索引一个type

控制单次搜索结果条数,总条数由es限制。控制请求超时时间

关于es的使用也有在调用链日志

一个节点一个主分片,0副本,

批量写入,控制单批写入字节数

在生产阶段,调用链日志写入慢,kafka会出现大量堆积等现象,关于如何解决。有以下方案,

索引写入时会伴随着id校验,请求体解析,分词等操作,都会带来一定的cpu开销。原先的索引结构中存在部分多余字段,无需进行分词,取消后可以减轻cpu压力。

使用es自动生成id,省去id检查步骤。调整translog合并时间,半小时一次,防止过多merge任务导致cpu开销过大。

在业务索引随着场景变化,写入量逐渐增多,集群cpu load变高,原来单个主分片写入出现瓶颈。遇到这种情况可以重建索引,主分片改为2个,分别分布在两台机器,达到负载均衡效果,数据需要迁移。

在提及到es时,不得不说也是和spark相关。这里就不展开讲了,下次深入了解的时候再学习。

番外

大公司都是搜索是一个团队,虽然我业务写的也不好,但是我更倾向于这种方向。分享者都很强,有开发相关的以及运维,技术演变快,找准自己的一个兴趣点,专研下去。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180911G0A5O400?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券