本文已参与「新人创作礼」活动,一起开启掘金创作之路。
ElasticSearch(简称ES)简介
Elasticsearch是用Java开发并且是当前最流行的开源的企业级搜索引擎。创始人:Shay Banon(谢巴农)。ES能够达到实时搜索,稳定,可靠,快速,安装使用方便。客户端支持Java、.NET(C#)、PHP、Python、Ruby等多种语言。
- 说白了,是解决【搜索】的中间件。
- 官方网站: www.elastic.co/
- 下载地址:www.elastic.co/cn/start
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。