Elasticsearch简介

一、什么是Elasticsearch

        Elaticsearch,简称为es, es是⼀个开源的⾼扩展的分布式全⽂检索引擎,它可以近乎实时的存储、检索 数据;本⾝扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使⽤Java开发并使⽤ Lucene作为其核⼼来实现所有索引和搜索的功能,但是它的⽬的是通过简单的RESTful API来隐藏 Lucene的复杂性,从⽽让全⽂搜索变得简单。

二、Elasticsearch核心概念

        1 索引index:⼀个索引就是⼀个拥有⼏分相似特征的⽂档的集合。⽐如说,你可以有⼀个客户数据的索引,另⼀个产 品⽬录的索引,还有⼀个订单数据的索引。⼀个索引由⼀个名字来标识(必须全部是⼩写字母的),并 且当我们要对对应于这个索引中的⽂档进⾏索引、搜索、更新和删除的时候,都要使⽤到这个名字。在 ⼀个集群中,可以定义任意多的索引。

        2 类型type:在⼀个索引中,你可以定义⼀种或多种类型。⼀个类型是你的索引的⼀个逻辑上的分类/分区,其语义 完全由你来定。通常,会为具有⼀组共同字段的⽂档定义⼀个类型。⽐如说,我们假设你运营⼀个博客 平台并且将你所有的数据存储到⼀个索引中。在这个索引中,你可以为⽤户数据定义⼀个类型,为博客 数据定义另⼀个类型,当然,也可以为评论数据定义另⼀个类型。

        3 字段field:相当于是数据表的字段,对⽂档数据根据不同属性进⾏的分类标识。

        4 映射mapping:mapping是处理数据的⽅式和规则⽅⾯做⼀些限制,如某个字段的数据类型、默认值、分析器、是否被 索引等等,这些都是映射⾥⾯可以设置的,其它就是处理es⾥⾯数据的⼀些使⽤规则设置也叫做映射, 按着最优规则处理数据对性能提⾼很⼤,因此才需要建⽴映射,并且需要思考如何建⽴映射才能对性能 更好。

        5 文档document:⼀个⽂档是⼀个可被索引的基础信息单元。⽐如,你可以拥有某⼀个客户的⽂档,某⼀个产品的⼀个⽂ 档,当然,也可以拥有某个订单的⼀个⽂档。⽂档以JSO(Javascript Object Notation)格式来表⽰, ⽽JSON是⼀个到处存在的互联⽹数据交互格式。 在⼀个index/type⾥⾯,你可以存储任意多的⽂档。注意,尽管⼀个⽂档,物理上存在于⼀个索引之 中,⽂档必须被索引/赋予⼀个索引的type。

        6 接近实时NRT:Elasticsearch是⼀个接近实时的搜索平台。这意味着,从索引⼀个⽂档直到这个⽂档能够被搜索到有⼀ 个轻微的延迟(通常是1秒以内)。

        7 集群cluster:⼀个集群就是由⼀个或多个节点组织在⼀起,它们共同持有整个的数据,并⼀起提供索引和搜索功能。 ⼀个集群由⼀个唯⼀的名字标识,这个名字默认就是“elasticsearch”。这个名字是重要的,因为⼀个节 点只能通过指定某个集群的名字,来加⼊这个集群。

        8 节点node:⼀个节点是集群中的⼀个服务器,作为集群的⼀部分,它存储数据,参与集群的索引和搜索功能。和集 群类似,⼀个节点也是由⼀个名字来标识的,默认情况下,这个名字是⼀个随机的漫威漫画⾓⾊的名 字,这个名字会在启动的时候赋予节点。这个名字对于管理⼯作来说挺重要的,因为在这个管理过程 中,你会去确定⽹络中的哪些服务器对应于Elasticsearch集群中的哪些节点。 ⼀个节点可以通过配置集群名称的⽅式来加⼊⼀个指定的集群。默认情况下,每个节点都会被安排加⼊ 到⼀个叫做“elasticsearch”的集群中,这意味着,如果你在你的⽹络中启动了若⼲个节点,并假定它们 能够相互发现彼此,它们将会⾃动地形成并加⼊到⼀个叫做“elasticsearch”的集群中。 在⼀个集群⾥,只要你想,可以拥有任意多个节点。⽽且,如果当前你的⽹络中没有运⾏任何 Elasticsearch节点,这时启动⼀个节点,会默认创建并加⼊⼀个叫做“elasticsearch”的集群。

        9 分片和复制shards&replicas⼀个索引可以存储超出单个结点硬件限制的⼤量数据。⽐如,⼀个具有10亿⽂档的索引占据1TB的磁盘 空间,⽽任⼀节点都没有这样⼤的磁盘空间;或者单个节点处理搜索请求,响应太慢。为了解决这个问 题,Elasticsearch提供了将索引划分成多份的能⼒,这些份就叫做分⽚。当你创建⼀个索引的时候,你 可以指定你想要的分⽚的数量。每个分⽚本⾝也是⼀个功能完善并且独⽴的“索引”,这个“索引”可以被 放置到集群中的任何节点上。

三、Elasticsearch安装

        1 利用docker下载镜像文件:docker pull elasticsearch;默认下载最新版。

        2 生成容器:docker run -id --name=自定义名称 -p 9200:9200 -p 9300:9300 elasticsearch。生成容器后可以访问虚拟机的9200端口查看信息。

        3 开启远程连接:elasticsearch从5版本开始默认不在允许远程访问,需进行如下操作:

                ① 登录容器:docker exec -it 自定义名称  /bin/bash;

                ② 由于容器中不支持编辑命令vim,先安装:apt-get update;完成后再执行:apt-get install vim;下载速度比较慢,建议科学下载。

                ③ 修改各类配置:首先是vim /config/elasticsearch.yml;将transport.host这一行从注解变为正文,在最后添加:cluster.name: my-elasticsearch;http.cors.enabled: true; http.cors.allow-origin:"*";network.host: 192.168.220.100。再修改:vi /etc/security/limits.conf 在最后追加* soft nofile 65536 ;* hard nofile 65536表示单个进程可打开的最大文件数。修vi /etc/sysctl.conf

追加vm.max_map_count=655360,表示一个进程的最大占用内存,执行sysctl -p,重启容器。

四、Elasticsearch客户端安装

        1 下载head插件:https://github.com/mobz/elasticsearch-head,解压到任意目录

        2 下载nodejs文件:https://nodejs.org/en/download/,双击安装,在控制台内输入 node -v查看版本。

        3 将grunt安装为全局命令:在elasticsearch-head-master文件夹下打开控制台,输入cnpm install -g grunt-cli,等待安装完成。

        4 启动head:在elasticsearch-head-master文件夹下打开控制台,执行npm install;grunt server;然后访问localhost:9100就可以看见控制台了。

五、Spring Data ElasticSearch

        Spring Data ElasticSearch 基于 spring data API 简化 elasticSearch操作,将原始操作elasticSearch的客 户端API 进⾏封装 。Spring Data为Elasticsearch项⽬提供集成搜索引擎。Spring Data Elasticsearch POJO的关键功能区域为中⼼的模型与Elastichsearch交互⽂档和轻松地编写⼀个存储库数据访问层。篇幅问题不展示代码了,附上官方网站大家看看api吧。Spring Data的官⽹:http://projects.spring.io/spring-data/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值