Elasticsearch 入门知识

一、什么是Elasticsearch

    Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。简单的来说就是一个基于Lucene工具包的搜索引擎。

二、Elasticsearch的作用

  • 全文搜索功能
  • 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。
  • 实时分析的分布式搜索引擎。
  • 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。

三、基本概念

  在Elasticsearch中,包含多个索引(Index),相应的每个索引可以包含多个类型(Type),这些不同的类型每个都可以存储多个文档(Document),每个文档又有多个属性。

  1、索引(index): ES将数据存储于一个或多个索引中,索引是具有类似特性的文档的集合。类比传统的关系型数据库领域来说,索引相当于SQL中的一个数据库。

  2、类型(type):类型是索引内部的逻辑分区(category/partition),然而其意义完全取决于用户需求。因此,一个索引内部可定义一个或多个类型(type)。类比传统的关系型数据库领域来说,类型相当于“表”。

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

  4、映射(mapping):ES中,所有的文档在存储之前都要首先进行分析。用户可根据需要定义如何将文本分割成token、哪些token应该被过滤掉,以及哪些文本需要进行额外处理等等。另外,ES还提供了额外功能,例如将域中的内容按需排序。事实上,ES也能自动根据其值确定域的类型。

   5、节点(node):运行了单个实例的ES主机称为节点,它是集群的一个成员,可以存储数据、参与集群索引及搜索操作。类似于集群,节点靠其名称进行标识,默认为启动时自动生成的随机Marvel字符名称。用户可以按需要自定义任何希望使用的名称,但出于管理的目的,此名称应该尽可能有较好的识别性。节点通过为其配置的ES集群名称确定其所要加入的集群。

  6、分片(shard):ES的“分片(shard)”机制可将一个索引内部的数据分布地存储于多个节点,它通过将一个索引切分为多个底层物理的Lucene索引完成索引数据的分割存储功能,这每一个物理的Lucene索引称为一个分片(shard)。每个分片其内部都是一个全功能且独立的索引,因此可由集群中的任何主机存储。创建索引时,用户可指定其分片的数量,默认数量为5个。

  7、副本(replica):Shard有两种类型:primary和replica,即主shard及副本shard。Primary shard用于文档存储,每个新的索引会自动创建5个Primary shard,当然此数量可在索引创建之前通过配置自行定义,不过,一旦创建完成,其Primary shard的数量将不可更改。Replica shard是Primary Shard的副本,用于冗余数据及提高搜索性能。每个Primary shard默认配置了一个Replica shard,但也可以配置多个,且其数量可动态更改。ES会根据需要自动增加或减少这些Replica shard的数量。

四、Elasticsearch和关系型数据术语对照类比关系

下面例举了一些类比关系型数据库的对照关系,有助于读者的理解

关系数据库      ⇒  数据库         ⇒ 表         ⇒ 行             ⇒ 列(Columns)

Elasticsearch  ⇒ 索引(Index)   ⇒ 类型(type)  ⇒ 文档(Docments)  ⇒ 字段(Fields)  

一个 Elasticsearch 集群可以包含多个索引(数据库),也就是说其中包含了很多类型(表)。这些类型中包含了很多的文档(行),然后每个文档中又包含了很多的字段(列)。

有些新版本的elasticsearch已经去除了type的概念,那么就可以把index当做表的概念,document当做行的概念

五、启动Elasticsearch服务器

Elasticsearch服务器的启动需要java8环境的支持

下载elasticsearch服务,并启动,所需的安装包可从以下链接下载,因不同版本的elasticsearch有兼容性问题,接口风格也有所差别,本博客的所有案例都是基于6.62版本的

https://download.csdn.net/download/bird_tp/12919782

下载后点击bin\elasticsearch.bat即可启动,启动成功后,访问http://127.0.0.1:9200/,出现以下界面即代表启动成功。

六、索引、文档增删改查

实际生产中都会借助一些工具来创建索引和文档,这里就不详细讲解了

七、elasticsearch-head

1、elasticsearch-head是什么

curl等客户端工具即可通过Restful API对Elasticsearch进行操作,但也有一些客户端工具提供对于ElasticSearch更加友好的可视化操作支持,比如elasticsearch-head

2、elasticsearch-head下载

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

3、安装

a)安装前提

es5以上版本安装head需要安装node和grunt,所以安装之前请保证你的机器已经具备这两个环境了

1.安装node.js

安装过程自行百度,node -v查看是否成功安装了node.js

2.安装grunt

因为运行head需要借助grunt命令,所以需要安装grunt。进入Node.js目录下,npm config ls  查看ndoe.js安装的目录,执行命令npm install -g grunt-cli,将grunt安装位全局命令。

进入head主目录执行npm install安装grunt,安装完成后执行grunt -version查看是否安装成功,会显示安装的版本号。

4、配置head

a)修改elasticsearch.yml

进入elasticsearch的安装目录,找到elastic·search.yml文件,在文件末尾加上如下配置

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

然后去掉
network.host: 192.168.0.1
的注释并改为
network.host: 0.0.0.0
去掉
cluster.name
node.name
http.port的注释(也就是去掉#)

b)双击elasticsearch.bat重启es

c)修改Gruntfile.js

在下载好的head文件夹内找到Gruntfile.js,在对应的位置加上hostname: ‘*’

在这里插入图片描述

5、 启动head

命令行进入head文件夹执行执行npm install 安装完成后执行grunt server 或者npm run start 运行head插件,如果不成功重新安装grunt。成功如下:

C:\wugx\elasticsearch\elasticsearch-head-master>grunt server
Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100
  • 访问http://localhost:9100/

6、总结

elasticsearch-head是较早支持Elasticsearch的可视化客户端工具之一,功能虽然能够使用,但是界面美感不足,目前属于功能基本停更的状态,这也是其使用上的不足之处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值