ElasticSearch实战——结合文本分析,推荐算法和元启发式算法实现资源自动分配

举报
华为云社区精选 发表于 2018/04/02 17:42:22 2018/04/02
【摘要】 案例介绍¶工作中有很多工作调度和资源匹配的场景,比如客服,技术支持或工单分派:带有文本描述的工单被录入系统,模糊匹配资源库中的人力资源,然后被分配给最适合的人处理。在一些场景中,工单的执行结果和评价也会被记录,作为工单分派信息的一部分被保留。由于场景复杂而且缺少标准化的问题描述,很多这类匹配问题仍然依赖人工,造成匹配时间延迟,匹配资源基于个人喜好和习惯而非基于可量化的标准。另外由于工单和资源...

案例介绍

工作中有很多工作调度和资源匹配的场景,比如客服,技术支持或工单分派:带有文本描述的工单被录入系统,模糊匹配资源库中的人力资源,然后被分配给最适合的人处理。在一些场景中,工单的执行结果和评价也会被记录,作为工单分派信息的一部分被保留。


由于场景复杂而且缺少标准化的问题描述,很多这类匹配问题仍然依赖人工,造成匹配时间延迟,匹配资源基于个人喜好和习惯而非基于可量化的标准。另外由于工单和资源的数据量巨大,一般的数据库查询很难满足实时查询需求。


为了解决查询性能和文本模糊匹配的问题,在案例中尝试使用了工业级实时分布式搜索引擎ElasticSearch,并结合元启发式算法simulated annealing根据历史数据寻找各个搜索键值的权重提升匹配准确度。

ElasticSearch简介

ES简介原文链接

  1. 背景

    1.1 思考:大规模数据如何检索?

     如:当系统数据量上了10亿、100亿条的时候,我们在做系统架构的时候通常会从以下角度去考虑问题: 
    
       1)用什么数据库好?(mysql、sybase、oracle、达梦、神通、mongodb、hbase…) 
      2)如何解决单点故障;(lvs、F5、A10、Zookeep、MQ) 
      3)如何保证数据安全性;(热备、冷备、异地多活) 
      4)如何解决检索难题;(数据库代理中间件:mysql-proxy、Cobar、MaxScale等;) 
       5)如何解决统计分析问题;(离线、近实时)

    1.2 传统数据库的应对解决方案

     1)通过主从备份解决数据安全性问题; 
     2)通过数据库代理中间件心跳监测,解决单点故障问题; 
     3)通过代理中间件将查询语句分发到各个slave节点进行查询,并汇总结果

    1.3 非关系型数据库的解决方案

     1)通过副本备份保证数据安全性; 
     2)通过节点竞选机制解决单点问题; 
     3)先从配置库检索分片信息,然后将请求分发到各个节点,最后由路由节点合并汇总结果
  2. 基础

    2.1 ES定义

     ES=elaticsearch简写, Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。 
     Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

    2.2 ES主要解决问题:

     1)检索相关数据; 
     2)返回统计结果; 
     3)速度要快。

    2.3 全文检索

     全文检索就是对一篇文章进行索引,可以根据关键字搜索,类似于mysql里的like语句。 
     全文索引就是把内容根据词的意义进行分词,然后分别创建索引,例如”你们的激情是因为什么事情来的” 可能会被分词成:“你们“,”激情“,“什么事情“,”来“ 等token,这样当你搜索“你们” 或者 “激情” 都会把这句搜出来。

    2.4 特点和优势

     1)分布式实时文件存储,可将每一个字段存入索引,使其可以被检索到。 
     2)实时分析的分布式搜索引擎。 
     分布式:索引分拆成多个分片,每个分片可有零个或多个副本。集群中的每个数据节点都可承载一个或多个分片,并且协调和处理各种操作; 
     负载再平衡和路由在大多数情况下自动完成。 
     3)可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。也可以运行在单台PC上(已测试) 
     4)支持插件机制,分词插件、同步插件、Hadoop插件、可视化插件等。

    2.5 性能结果展示

     (1)硬件配置: 
    
     CPU 16核 AuthenticAMD 
     内存 总量:32GB 
     硬盘 总量:500GB 非SSD
    
     (2)在上述硬件指标的基础上测试性能如下: 
    
     平均索引吞吐量: 12307docs/s(每个文档大小:40B/docs) 
     平均CPU使用率: 887.7%(16核,平均每核:55.48%) 
     构建索引大小: 3.30111 GB 
     总写入量: 20.2123 GB 
     测试总耗时: 28m 54s.

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png


作者|谭菁

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。