ElasticSearch(分布式全文搜索引擎)

Posted 8888-lhb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch(分布式全文搜索引擎)相关的知识,希望对你有一定的参考价值。

1.Lucene的优化, 实现了高可用的分布式集群的搜索方案

2.首先,ES的索引库管理支持依然是基于Apache Lucene(TM)的开源搜索引擎。ES也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的 RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

3.ES的特点

a)  分布式的实时文件存储,每个字段都被索引并可被搜索

分布式的实时分析搜索引擎

可以扩展到上百台服务器,处理PB级结构化或非结构化数据

高度集成化的服务,你的应用可以通过简单的 RESTful API、各种语言的客户端甚至命令行与之交互。
ES支持分布式集群

 

b)  上手Elasticsearch非常容易。它提供了许多合理的缺省值,并对初学者隐藏了复杂的搜索引擎理论。它拥有开瓶即饮的效果(安装即可使用),只需很少的学习既可在生产环境中使用。

c)  与ES类似的框架

            i.     ES框架自身携带分布式协调管理的功能,但是仅仅支持json格式的数据

           ii.     Solr(重量级加框架):利用zookeeper进行分布式管理,支持更多格式的数据,使用时要做许多配置

         iii.     Katta基于Lucene
基于 Lucene 的,支持分布式,可扩展,具有容错功能,准实时的搜索方案。优点:开箱即用,可以与 Hadoop 配合实现分布式。具备扩展和容错机制。
缺点:只是搜索方案,建索引部分还是需要自己实现。在搜索功能上,只实现了最基本的需求。成功案例较少,项目的成熟度稍微差一些。

           iv.     HadoopContrib

  1. Map/Reduce 模式的,分布式建索引方案,可以跟 Katta 配合使用。优点:分布式建索引,具备可扩展性。缺点:只是建索引方案,不包括搜索实现。工作在批处理模式,对实时搜索的支持不佳。

d)  小結:ElasticSearch简化了全文检索lucene的使用,同时增加了分布式的特性,使得构建大规模分布式全文检索变得非常容易。

  1. ES的安装和使用说明

a)  安装ES:下载压缩包解压,然后运行elasticsearch.bat就行了
浏览器运行:127.0.0.1:9200

b)  ES服务器的三个状态

            i.     Green—yellow--red

c)  ES的交互方式

            i.     基于restFul 的API交互方式,和所有的客户端交互都通过json格式的数据交互

           ii.     Java API交互的两种方式

  1. 节点客户端
    节点客户端以无数据节点(none data node)身份加入集群,换言之,它自己不存储任何数据,但是它知道数据在集群中的具体位置,并且能够直接转发请求到对应的节点上。
  2. 传输客户端
    这个更轻量的传输客户端能够发送请求到远程集群。它自己不加入集群,只是简单转发请求给集群中的节点。
    两个Java客户端都通过9300端口与集群交互,使用ES传输协议(ES Transport Protocol)。集群中的节点之间也通过9300端口进行通信。如果此端口未开放,你的节点将不能组成集群。

注意

Java客户端所在的ES版本必须与集群中其他节点一致,否则,它们可能互相无法识别。

d)  Restful风格的拓展认识

e)  辅助管理工具(kibana)

            i.     ① Kibana5.2.2下载地址:https://www.elastic.co/downloads/kibana

           ii.     ② 解压并编辑config/kibana.yml,设置elasticsearch.url的值为已启动的ES

         iii.     ③ 启动Kibana5 : binkibana.bat

           iv.     ④ 默认访问地址:http://localhost:5601

  1. 认识ElasticSearch

a)  概念:和Lucene一样都是用于全文检索,区别就是Lucene是个全文搜索工具包,而ES是一个全文搜索服务器

b)  全文检索:基于索引查询数据的技术,代替了模糊查询,提高了查询的效率

c)  Lucene的缺点:使用复杂,只支持JAVA语言环境,Lucene无法做集群

d)  而ES弥补了Lucene的不足

            i.     ElasticSearch简化了全文检索lucene的使用,同时增加了分布式的特性,使得构建大规模分布式全文检索变得非常容易.

           ii.     ES本身支持集群,

         iii.     ES对Lucene进行了一个封装,原来Lucene创建索引是使用一对代码创建索引,而ES创建索引只用发送一个http请求就好了

  1. 安装ES服务器

a)  下载ES压缩包

b)  解压

c)  启动bin/elasticsearch.bat

d)  测试是否启动: http://localhost:9200

e)  启动kibana时可以看到ES集群的健康状态

  1. ES图形界面客户端安装

1)curl

   windows不支持,需要在linux

2)       火狐的POSTER插件界面

3)       kibana

官方推荐

4)前端head比较屌,可以直接看到shard和replica

5)postman

a)  这里选择kibana可视化界面

            i.     下载压缩包

           ii.     解压安装

         iii.     修改config/kibana.yml配置文件: 设置elasticsearch.url的值为已启动的ES的端口路径

           iv.     启动kibana

            v.     访问localhost:5601

  1. ElasticSearch-Head的安装

a)  解压压缩包 ,然后在cmd运行安装命令
npm install,和运行命令npm run start

安装完毕后要连接ES,需要在elasticsearch/config/elasticsearch.yml中进行配置, http.cors.enabled: true

http.cors.allow-origin: "*",后才能连接到ES服务器

以上是关于ElasticSearch(分布式全文搜索引擎)的主要内容,如果未能解决你的问题,请参考以下文章

分布式全文检索引擎之ElasticSearch

分布式全文搜索引擎ElasticSearch

分布式全文搜索引擎——Elasticsearch

550Elasticsearch详细入门教程系列 -分布式全文搜索引擎 Elasticsearch 2023.03.31

PHP基于elasticsearch全文搜索引擎的开发

分布式全文检索引擎之ElasticSearch