L
L
LearnJava
Search…
⌃K

Elasticsearch安装使用

一、ES简介

Elasticsearch简称ES,是一个开源的分布式、RESTful风格的搜索和数据分析引擎,它的底层是开源库Apache Lucene。ES在Apache Lucene封装了一层,使全文检索变得简单易用。
ES的特点如下:
  • 一个分布式的实时文档存储,每个字段可被索引和搜索;
  • 一个分布式实时分析搜索引擎;
  • 能胜任上百个服务节点的扩展,并支持PB级别的结构化或者非结构化数据。

二、ES的安装

解压后,执行:
cd elasticsearch-<version>
./bin/elasticsearch
{
"name": "wangjundeMacBook-Pro.local",
"cluster_name": "elasticsearch",
"cluster_uuid": "OBNQJ5cpT9mff6vvpvmCcw",
"version": {
"number": "7.13.1",
"build_flavor": "default",
"build_type": "tar",
"build_hash": "9a7758028e4ea59bcab41c12004603c5a7dd84a9",
"build_date": "2021-05-28T17:40:59.346932922Z",
"build_snapshot": false,
"lucene_version": "8.8.2",
"minimum_wire_compatibility_version": "6.8.0",
"minimum_index_compatibility_version": "6.0.0-beta1"
},
"tagline": "You Know, for Search"
}

三、Kibana的安装

Kibana是一个开源的分析和可视化平台,旨在与ES合作。Kibana提供搜索、查看和存储在ES索引中的数据进行交互的功能。开发人员可以轻松地执行高级数据分析,并在各种图表、表格和地图中可视化数据。
解压后执行:
cd kibana-<version>
./bin/kabana
启动成功后,ES就运行在本地的5601端口,打开:http://localhost:5601/,如果能看到正常的运行web页面,说明启动成功。

四、ES的实践

实践之前先明确一下es的存储结构:
  • index:索引,数据的顶层单位,可以理解为mysql中的一个数据库;
  • document:index的单条记录成为document(文档),同一个index的document最好有相同的结构,有利于提高搜索效率,可以理解为mysql中的一行数据;
  • type:document可以分组,比如一个index里面存储的是weather(天气)数据,这些数据可以按照城市分组也可以按照天气分组。(目前7.x版本一个index只能有一个type),可以理解为mysql中的一个表。

4.1 数据增加

# 新建名为accounts的index
curl -X PUT 'localhost:9200/accounts'
# 新增数据,其中1为数据的id,可以为任意字符串
curl -H "Content-Type: application/json" -X PUT localhost:9200/accounts/doc/1 -d '
{
"body":"body1"
}'
# 新增数据,不指定id,es会自动生成一个id
curl -H "Content-Type: application/json" -X POST localhost:9200/accounts/doc -d '
{
"body":"body2"
}'

4.2 数据删除

# 删除index
curl -X DELETE 'localhost:9200/weather'
# 删除数据
curl -X DELETE localhost:9200/accounts/doc/1

4.3 数据查找

# 查询单条数据
curl 'localhost:9200/accounts/doc/1?pretty=true'
{
"_index" : "accounts",
"_type" : "doc",
"_id" : "1",
"_version" : 2,
"_seq_no" : 10,
"_primary_term" : 1,
"found" : true,
"_source" : {
"body" : "body1"
}
}
# 查询所有数据
curl 'localhost:9200/accounts/doc/_search?pretty=true'
# 全文搜索
curl -H "Content-Type:application/json" 'localhost:9200/accounts/doc/_search?pretty=true' -d '
{
"query" : { "match" : { "body" : "body1" }}
}'

4.4 数据修改

# 和新增数据一样语法,新数据会覆盖老数据
curl -H "Content-Type: application/json" -X PUT localhost:9200/accounts/doc/1 -d '
{
"body":"body2"
}'