什么是ElasticSearch?
部署ES和Kibana
通常采用docker-compose部署ES(ElasticSearch)服务是最方便的,这里不得不提到将ES数据可视化的客户端工具kibana。
下面我们将这两个服务一起部署, 从dockerhub上获取到es和kibana的docker镜像,下面是docker-compose.yml。
version: '3'
services:
es01:
image: elasticsearch:7.14.1
environment:
- node.name=es01
- cluster.name=data-cluster
- bootstrap.memory_lock=true
- cluster.initial_master_nodes=es01
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- /data/docker2/elastic/es01/data:/usr/share/elasticsearch/data
- /data/docker2/elastic/es01/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- /data/docker2/elastic/es01/plugins:/usr/share/elasticsearch/plugins
- /data/docker2/elastic/es01/logs:/usr/share/elasticsearch/logs
- /etc/localtime:/etc/localtime
ports:
- 9201:9200
#networks:
# - elastic
restart: always
kibana:
image: kibana:7.14.1
ports:
- 5602:5601
environment:
SERVER_NAME: 10.88.7.123
ELASTICSEARCH_HOSTS: '["http://10.88.7.123:9201"]'
restart: always
注意:kibana中的‘SERVER_NAME’设置成ES服务的IP地址,‘ELASTICSEARCH_HOSTS’设置成ES服务的地址。
镜像和docker-compose.yml准备好后,执行命令创建容器并启动服务。
docker-compose up -d --build
确认ES和kibana服务是否启动成功:
# docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------------------------------------------
docker2_es01_1 /bin/tini -- /usr/local/bi ... Up 0.0.0.0:9201->9200/tcp, 9300/tcp
docker2_kibana_1 /bin/tini -- /usr/local/bi ... Up 0.0.0.0:5602->5601/tcp
浏览器访问kibana,http://{ip地址}:5602 ,如下图:
点击Dev tools进入工具集可以通过指令和ES集群进行交互。
Kibana Dev-tools中的常用操作指令
1、索引相关
# 1、创建索引
PUT /users
{
"mappings": {
"properties": {
"UserName": {
"type": "text",
"analyzer": "standard"
},
"Department": {
"type": "keyword"
},
"Permissions": {
"type": "keyword"
}
}
}
}
# 2、删除索引
DELETE /users
# 3、获取集群中所有索引信息
GET /_cat/indices?v
# 4、查询某个索引(users)信息
GET /users/_mapping
# 5、索引增加字段
PUT /users/_mapping
{
"properties": {
"new_field": {
"type": "text"
}
}
}
2、文档相关
# 1、增加文档
POST /users/_doc
{
"UserName": "xiaoming",
"Department": "研发一部",
"Permissions": [],
"status": "normal"
}
# 2、删除文档(通过doc的id删除)
DELETE /users/_doc/X3K3SosB8OQmTd26aQgG
# 3、分页查询文档
# 从第21条开始获取,一共获取20条记录;默认from为0,size为10
GET /users/_search
{
"query": {
"match_all": {}
},
"from": 20,
"size": 20
}
# 4、修改某个记录的字段值
# <index_name> 是索引名称,<document_type> 是文档类型(如果适用),<document_id> 是要修改的文档的ID。
POST /<index_name>/<document_type>/<document_id>/_update
{
"doc": {
"<field_name>": "<new_value>"
}
}
# 5、 查询并删除
# 这里用到符合查询
POST /<index_name>/_delete_by_query
{
"query": {
"bool": {
"must": [
{
"match": {
"<field_name>": "<value>"
}
},
{
"match": {
"<field_name2>": "<value2>"
}
}
]
}
}
}
# 6、 搜索并聚类
GET /<index_name>/_search
{
"size": 0,
"query": {
"match": {
"<field_name>": "<field_value>"
}
},
"aggs": {
"group_by_field": {
"terms": {
"field": "<要聚类的字段名>",
"size": <返回的聚类数量>
}
}
}
}
3、其它
Kibana中提供的ES的API指令还有很多,这里不在赘述。大家在使用中有具体需求时可进行在线查找使用,随着各种AI工具的出现,我们还是需要尽快掌握运用这些工具的能力,以便提高工作效率。