当你「百度」搜索的时候,你知道它背后的逻辑吗?

保持好奇心,从数据中探寻各种问题的答案。

什么是搜索

当你「百度」搜索的时候,你知道它背后的逻辑吗?

搜索大家肯定非常熟悉,我们每天都在使用:

  • 有什么问题我们就百度,谷歌,必应。
  • 逛淘宝,刷微博,点外卖,我们都会去搜索我们想要的信息。
  • 程序员接触比较多的在Github(代码库)当中搜索某段代码。运维侠要查找服务器的运行日志。

搜索无处不在。通过一些关键字,帮我们查询出来跟这些关键字相关内容信息。

快速搭建高效搜索的利器——Elasticsearch

当你「百度」搜索的时候,你知道它背后的逻辑吗?

大数据时代,我们能获取到的数据越来越多,存储不是问题,我们面对的困难在于如何将这个数据利用,这时候我们就需要一个全文搜索,或者结构化数据的实时统计工具。

Elasticsearch 是一个分布式的、高可扩展的开源全文搜索分析引擎,可以用它实现近实时的来存储、搜索和分析大量的数据。

比如: 你自己开了一个网店,客户可以通过搜索栏找到你正在出售的商品。 这个时候

  • 你可以用 ES 存储全部商品的目录和存货,展示给客户
  • 你可以使用ES 存储店铺运营的数据,用于分析趋势、统计数据、概要和异常(使用 Logstash来收集,聚合,解析数据,存入ES)
  • 你可以使用ES,喜欢你店铺产品的用户提供各商品降价提醒的功能
  • 你还可以使用ES对之前收集的信息进行研究分析,做出可视化,了解客户喜好,和热销趋势,实现你的商业策略的需求

大家都在用ES做这些工作

当你「百度」搜索的时候,你知道它背后的逻辑吗?

  1. 记录和日志分析——阿里 ES 构建自己的日志采集和分析体系 。
  2. 采集和组合公共数据——ES帮助设置在Twitter的主题标签,然后采集这些主题标签的相关推文并在Kibana中进行分析。
  3. 全文搜索——Github使用ES搜索20TB的数据,包括13亿的文件和1300亿行的代码。
  4. 事件数据和指标——京东用户设定某商品的价格阈值,当低于该阈值的时候,发送通知消息给用户。
  5. 数据可视化——百度目前广泛使用ES作为文本数据分析,采集百度所有服务器上的各类指标数据及用户自定义数据,通过对各种数据进行多维分析展示,辅助定位分析实例异常或业务层面异常。

Elasticsearch 的特点

1)API更简单,更高级,天生的兼容多语言开发(Curl、java、c#、python、JavaScript、php、perl、ruby)

2)分布式的实时文件存储和分析搜索引擎,每个字段都被索引且可用于搜索,海量数据下近实时秒级响应

3)易扩展,支持处理PB级别的结构化或非结构化数据

当你「百度」搜索的时候,你知道它背后的逻辑吗?

使用 ES你需要记住的五个核心概念

  • 索引(index),是一类文档的集合,所有的操作比如索引(索引数据)、搜索、分析都是基于索引完成的。 在一个集群中,可以定义任意数量的索引。
  • 类型(type),可以理解成一个索引的逻辑分区,用于标识不同的文档字段信息的集合。
  • 文档(document),是存储数据信息的基本单元,使用json来表示。
  • 节点(Node),一个ES服务器就成为一个节点,多个ES服务器就组成了集群。
  • 分片与备份(shard),在ES中,索引会备份成分片,每个分片是独立的lucene索引,可以完成搜索分析存储等工作。

实践是验证软件好用的唯一方法

当你「百度」搜索的时候,你知道它背后的逻辑吗?

上手Elasticsearch非常容易。对于初学者隐藏了Lucene复杂的搜索引擎理论,开箱即用,只需很少的学习既可在生产环境中使用。

在线安装(以Debian为例)

导入Elasticsearch PGP Key

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

从APT源安装

sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
sudo apt-get update && sudo apt-get install elasticsearch

运行 Elasticsearch SysV init

sudo chkconfig --add elasticsearch

Elasticsearch启动和停止

sudo -i service elasticsearch start
sudo -i service elasticsearch stop

运行 Elasticsearch systemd

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service

Elasticsearch启动和停止

sudo systemctl start elasticsearch.service
sudo systemctl stop elasticsearch.service

记得点关注哦~

当你「百度」搜索的时候,你知道它背后的逻辑吗?

相关推荐