Elasticsearch入门

elaticsearch搜索引擎

简介

  ElasticSearch是一个基于Lucene的搜索服务器。
     它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。
     Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。
  设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便

 

官网

   https://www.elastic.co 

 

其它搜索引擎

  solr

    一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果

  sphinx

    一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索

 

关系型数据库搜索缺点

  1. 无法打分、排序

  2. 无分布式

  3. 无法解析复杂搜索请求

  4. 效率低

  5. 无法分词

 

搜素引擎需要解决的问题

  1. 搜索解决方案要高效

  2. 搜素引擎零配置和完全免费

  3. 能简单的通过json和http与搜索引擎交互

  4. 搜素服务器稳定

  5. 易扩展

 

安装使用Elasticsearch

安装elasticsearch-rtf(针对中文搜索集成了相关插件)

下载并运行

1 https://github.com/medcl/elasticsearch-rtf

 

head插件和kibana安装

elasticsearch-head是一个elasticsearch的集群管理工具

包管理工具部署

https://www.cnblogs.com/yominhi/p/7039795.html

# 下面使用到npm安装下载包的时候,都替换成cnpm,提升下载速度

下载并运行

1 https://github.com/mobz/elasticsearch-head

第一次运行,插件会提示未连接,这涉及到elasticsearch的安全策略,默认不运行第三发库连接

配置安全策略文件,编辑elasticsearch.yml

# 追加下面内容

http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-methods: OPTIONS, HEAD, PUT, GET, POST,DELETE
http.cors.allow-headers: "X-Requested-With, Content-Type, Content-Length, X-User"

重启elasticsearch,并刷新head页面就能连接了

 

kibana-sense安装

注意

  Sense是一个Kibana应用程序,要想启动和运行,首先需要下载Kibana,并按照这里的指示安装

  kibana的版本需要和elasticsearch-rtf使用版本一致,可以在head管理页面中,点击信息查看版本号

下载地址

1 https://www.elastic.co/downloads/past-releases

运行kibana

  进入软件包的bin目录下,执行kibana.bat文件,发现程序监听在5601端口,我们打开并访问

点击导航栏的Dev Tools

  点击执行命令按钮,进行初始化

  以后关于es的操作都是在这里的console进行

 

elasticsearch概念

索引(index) 
    文档容器
    关系型数据库中的数据库(DataBase),等价于ES中的索引(Index)

类型(type)    
    类型是索引内部的逻辑分区,用来预定义文档的域
    一个数据库下面有N张表(Table),等价于1个索引Index下面有N多类型(Type)

文档(document)
    文档是Lucene搜索的原子单位,它包含一个或多个域。
    一个数据库表(Table)下的数据由多行(ROW)多列(column,属性)组成, 等价于1个Type由多个文档(Document)组成, 每个文档有多个Field

映射(mapping) 
    原始内容存储为文档之前需要事先进行分析,如分词、过滤、内容排序等。
    在一个关系型数据库里面,schema定义了表、每个表的字段,还有表和字段之间的关系。 
    与之对应的,在ES中:Mapping定义索引下的Type的字段处理规则,即索引如何建立、索引类型、是否保存原始索引JSON文档、是否压缩原始JSON文档、是否需要分词处理、如何进行分词处理等。


cluster

    代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。
    
    es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。

node

    一个节点是集群中的一个服务器,由一个名字来标识,默认是一个随机的漫画角色的名字

shards

    代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。
    
    分片的数量只能在索引创建前指定,并且索引创建后不能更改。

replicas

    代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。
    
    二是提高es的查询效率,es会自动对搜索请求进行负载均衡。

recovery

    代表数据恢复或叫数据重新分布,es在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。

river

    代表es的一个数据源,也是其它存储方式(如:数据库)同步数据到es的一个方法。
    
    它是以插件方式存在的一个es服务,通过读取river中的数据并把它索引到es中,官方的river有couchDB的,RabbitMQ的,Twitter的,Wikipedia的。

gateway

    代表es索引快照的存储方式,es默认是先把索引存放到内存中,当内存满了时再持久化到本地硬盘。
    
    gateway对索引快照进行存储,当这个es集群关闭再重新启动时就会从gateway中读取索引备份数据。
    
    es支持多种类型的gateway,有本地文件系统(默认),分布式文件系统,Hadoop的HDFS和amazon的s3云存储服务。

discovery.zen

    代表es的自动发现节点机制,es是一个基于p2p的系统,它先通过广播寻找存在的节点,再通过多播协议来进行节点之间的通信,同时也支持点对点的交互。

Transport

    代表es内部节点或集群与客户端的交互方式,默认内部是使用tcp协议进行交互,同时它支持http协议(json格式)、thrift、servlet、memcached、zeroMQ等的传输协议(通过插件方式集成)。

 

posted @ 2018-05-25 18:25  前路~  阅读(179)  评论(0编辑  收藏  举报