Elasticsearch5快速入门

                                                       Elasticsearch5快速入门

                                                                                      作者:PanKuanYew

 

一、Elasticsearch概述

       Elasticsearch是由Shay Banon发起的一个开源搜索服务器项目, 主要用来全文检索,2010年2月发布。Elasticsearch建立在一个全文搜索引擎库 Apache Lucene基础之上, Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎。

以下是官方描述:(参考https://www.elastic.co/products/elasticsearch)

  1. 一个分布式的实时文档存储,每个字段都可以被索引与搜索
  2. 一个分布式实时分析搜索引擎
  3. 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据

 

二、Elasticsearch核心概念

       1. Cluster(集群)

       一个集群就是由一个或多个节点组织在一起,它们共同持有整个的数据,并一起提供索引和搜索功能。一个集群由一个唯一的名字标识,节点只能通过指定某个集群的名字来加入这个集群。

        2. Node(节点)

        一个节点是集群中的一个服务器,作为集群的一部分,它存储的数据,参与集群的索引和搜索功能。和集群类似,一个节点也是由一个名字来标识的。

        3. Shards(分片)

       当有大量的文档时,由于内存的限制、硬盘能力、处理能力不足、无法足够快地响应客户端请求等,一个节点可能不够。在这种情况下,数据可以分为较小的称为分片(shard)的部分(其中每个分片都有一个独立的Lucene索引)。每个分片可以放在不同的服务器上,因此,数据可以在集群的节点中传播。此外,多个分片可以加快索引。

       4. Replica(副本)

       为了提高查询吞吐量或实现高可用性,可以使用分片副本。副本(replica)只是一个分片的精确复制,每个分片可以有零或多个副本。Elasticsearch可以有许多相同的分片,其中之一被自动选择去更改索引操作。这种特殊的分片称为主分片(primary shard),其余称为副本分片(replica shard)。在主分片丢失时,集群会将副本提升为新的主分片。

       5. Index(索引)

       Elasticsearch将数据存储于一个或多个索引中,索引是具有类似特性的文档的集合。索引由其名称(必须为全小写字符)进行标识,并通过引用此名称完成文档的创建、搜索、更新及删除操作。一个Elasticsearch集群中可以按需创建任意数目的索引。

       6. Type(类型)

       类型是索引内部的逻辑分区,一个索引可定义一个或多个类型(type)。一般来说,类型就是为那些拥有相同的域的文档做的预定义。例如,在索引中,可以定义一个用于存储用户数据的类型,一个存储日志数据的类型,以及一个存储评论数据的类型。

       7. Document(文档)

       文档是Lucene索引和搜索的原子单位,它是包含了一个或多个域的容器,基于JSON格式进行表示。文档由一个或多个域组成,每个域拥有一个名字及一个或多个值,有多个值的域通常称为“多值域”。每个文档可以存储不同的域集,但同一类型下的文档至应该有某种程度上的相似之处。

       8. Mapping(映射)

       Elasticsearch中,所有的文档在存储之前都要首先进行分析。用户可根据需要定义如何将文本分割成token、哪些token应该被过滤掉,以及哪些文本需要进行额外处理等等。事实上,Elasticsearch也能自动根据其值确定域的类型。

为了更直观理解,Elasticsearch5之前,可以简单地做如下映射:

                                                    

 

三、Elasticsearch-head插件

       Elasticsearch-head 是用于监控 Elasticsearch 状态的客户端插件,包括数据可视化、执行增删改查操作等。安装head插件前需安装node和grunt-cli工具,同时设置taobao镜像地址可保证下载安装顺利。

       集群健康值可有颜色辨别,绿色代表正常,黄色代表可用不正常,红色代表不可用。可直接观测node,shard,index,settings,type,field以及field对应的value相关信息。

          可执行查询,修改,删除,新增操作。

 

四、Elasticsearch-sql插件

       目前Elasticsearch-sql插件只支持查询。Elasticsearch优势在查询方面,所以不建议用增删改。安装sql插件需要先安装node工具。插件使用的查询语法和mysql基本一致。

 查询某个索引下的字段

 

  查询多个指定索引、类型下的字段:

       Sql插件除支持基本的order by,group by,like,and,or ,limit,in,between and等,还支持聚合函数,range,简单的嵌套,当from后面为*则查询所有的索引数据

        除常规用法外,还有一些特有的语法,如matchQuery,terms/term等,实际应用中,可根据项目的业务需求,定制所需要的sql函数,如时间函数等。

 

五、应用案例

       Elasticsearch 发展至今,国内外已有很多公司在应用,其中国内较著名的有,百度:云分析、网盟、预测、文库、钱包、风控等业务,新浪:日志集中管理,分析,检索和可视化等(运维方面),京东:商品搜索,阿里&腾讯:阿里云、腾讯云

       国外较著名的有,Github:Github使用Elasticsearch搜索20TB的数据,包括13亿的文件和1300亿行的代码,Wikipedia:使用 Elasticsearch 提供带有高亮片段的全文搜索,还有 search-as-you-type 和 did-you-mean 的建议,Stack Overflow:将地理位置查询融入全文检索中去,并且使用 more-like-this 接口去查找相关的问题与答案。

 


                                                                                                                                                        本文仅代表个人观点及经验分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值