ElasticSearch入门简介

192 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

ElasticSearch(简称ES)简介

Elasticsearch是用Java开发并且是当前最流行的开源的企业级搜索引擎。创始人:Shay Banon(谢巴农)。ES能够达到实时搜索,稳定,可靠,快速,安装使用方便。客户端支持Java、.NET(C#)、PHP、Python、Ruby等多种语言。

ElasticSearch(简称ES)应用场景

日志管理与分析
  • Kafka->logstash->es->kibana(简单)
  • Kafka->kafka-connect-elasticsearch->es->kibana(有些复杂)
  • Kafka->elasticsearch-river-kafka-1.2.1-plugin->es->kibana(支持比较差)
大数据分析
应用程序性能分析
站内搜索

不管哪种场景呢,归根结底本质是用于【全文检索】

全文检索

举个例子介绍全文检索:

  • 搜索含有某些关键词的文章/新闻等等。比如:搜索iphone256,会出现很多商品信息:iphone13容量256G等等信息。

由此可以解释一下什么是全文检索:通过一个程序扫描文本中的每一个单词,针对【单词】建立索引,并保存该单词在文本中的位置、以及出现的次数。用户查询时,通过之前建立好的索引来查询,将索引中单词对应的文本位置、出现的次数返回给用户,因为有了具体文本的位置,所以就可以将具体内容读取出来。

  • 找到位置:可以做高亮。
  • 找到出现的次数:匹配度更高等。

如何做到全文检索?答:倒排索引。

那么什么是倒排索引?

  • 正排索引:mysql中ID是索引是0001,根据0001这个索引,找到对应的内容:商品详情信息是iphone13容量256G。
  • 倒排索引:iphone13容量256G【分词】后,成为iphone、iphone13、13、容量、256、256G。把这些分词当成索引,索引指向商品ID。(分词由分词器做,分词器有很多,针对中文分词的常用IK分词器,作为一个插件安装即可)

ElasticSearch发展史

根据Lucene封装一下、扩展一下、分布式一下、Restful一下等等开源出来成为ES。好就好在作者为我们做好了高可用、副本冗余、水平扩展等等,我们只需调用接口简单使用即可。简单说,一个ES里运行着多个Lucene实例。

技术选型时怎么选?

  • 【推荐】传统行业用solr,互联网实时用es。