概述
本篇内容定位ElasticSearch入门介绍,其中包括ElasticSearch产生背景,特点,应用场景,安装,使用(命令行,Java中引入),底层原理,等。
产生的背景
大数据时代,大量的数据只是被存储,不能做实时决策分析,这时候需要一个全文搜索,或者结构化数据的实时统计工具。
Elasticsearch 是一个分布式、可扩展、近实时的搜索与数据分析引擎。 它能从项目一开始就赋予你的数据以搜索、分析和探索的能力。
特点
分布式、可扩展、实时、处理PB级别的数据
应用场景
统计、搜索
安装方法
Linux下的安装方法如下,Windows可以自行百度:
- 安装JDK1.8以上;
- 下载ES安装包(5.6.8为例);https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.8.tar.gz
- 解压,执行bin/elasticsearch
- 当显示
[INFO ][o.e.n.Node] [6-bjhwl] started
时表示安装成功; - 也可以另打开一个终端,通过
curl 'http://localhost:9200/?pretty'
来测试。
参考:https://www.elastic.co/guide/en/elasticsearch/reference/5.6/_installation.html
踩坑记录:我这里是在win7上的fedora28虚拟机上安装的,在ES启动之后,不能通过windows的浏览器访问,最后发现需要在es的配置文件中配置Linux机器IP,方法如下:
在es的config目录中,找到elasticsearch.yml配置文件,在network.host中增加Linux的IP地址,IP地址可以 通过ifconfig查询
使用
基本使用
类似于MySQL,在某一类数据存入MySQL时,需要在MySQL中先创建库(database),再创建表(table),然后把数据存入insert
进去,当需要查询的时候就select
,需要删除就delete
,需要更新就update
。
那么ES作为一个搜索引擎,是如何保存数据的,又是如何查询的,不需要了,又该怎么删除呢,并且当数据有误时,能修改吗?
1 . 再回答上面几个问题之前需要先引入几个概念:
- 索引(index)
索引是一类文档的集合,所有的操作比如索引(索引数据)、搜索、分析都是基于索引完成的。
在一个集群中,可以定义任意数量的索引。 - 类型(type)
类型可以理解成一个索引的逻辑分区,用于标识不同的文档字段信息的集合。 - 文档(doc)
文档是存储数据信息的基本单元,使用json来表示。 - 节点(node)
一个ES服务器就成为一个节点,多个ES服务器就组成了集群。 - 分片(shard)与备份(replica)
在ES中,索引会备份成分片,每个分片是独立的lucene索引,可以完成搜索分析存储等工作。
2 . 举例子
看了上面的定义描述,再通过例子来了解下。
现在有个People对象,需要保存在ES中,People的定义如下:
public class People {
private Long id;
private String name;
private String sex;
private Float height;
private Float weight;
/**
* 兴趣爱好
*/
private String interests;
}
可以创建一个索引名称为people
的索引,类型为people
,类型是文档字段信息的集合,所以类型的json为
"properties": {
"id": {
"type": "long",
"index": "not_analyzed"
},
"name": {
"type": "string"
},
"sex": {
"type": "string"
},
"height": {
"type": "float",
"index": "not_analyzed"
},
"weight":{
"type": "float",
"index": "not_analyzed"
},
"interests": {
"type": "string",
"analyzer": "ik"
}
}
这里直接通过终端创建索引和类型比较麻烦,我安装了elasticsearch-head工具,安装方法https://github.com/mobz/elasticsearch-head。
安装elasticsearch-head
我直接通过Chrome安装的插件,插件地址:https://chrome.google.com/webstore/detail/elasticsearch-head/ffmkiejjmecolpfloofpjologoblkegm?utm_source=chrome-ntp-icon 。截图如下:
安装好后,连接:
插入数据:
至此,ES安装成功,并通过elasticsearch-head工具向其中插入了两条数据。
Java中引入
在Web工程中引入es客户端,单独写了一篇:Java工程中引入ES客户端
参考:
https://www.elastic.co/guide/cn/elasticsearch/guide/current/foreword_id.html
http://www.cnblogs.com/xing901022/p/4954947.html
https://es.xiaoleilu.com/010_Intro/00_README.html
https://blog.csdn.net/laigood/article/details/8193758