ElasticSearch基础用法

什么是ElasticSearch?

Elasticsearch是一个开源的、分布式的、实时的搜索和分析引擎。它允许用户近乎实时地存储、检索大量数据,并能够高效地对其进行全文搜索、聚合和分析。

部署ES和Kibana

通常采用docker-compose部署ES(ElasticSearch)服务是最方便的,这里不得不提到将ES数据可视化的客户端工具kibana。

Kibana是一个开源的数据分析和可视化平台,设计出来主要用于与Elasticsearch一起使用。用户可以用Kibana来搜索、查看和交互存放在Elasticsearch索引中的数据,通过各种不同的图表、表格和地图等来展示高级的数据分析与可视化。

下面我们将这两个服务一起部署, 从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准备好后,执行命令创建容器并启动服务。

bash 复制代码
docker-compose up -d --build 

确认ES和kibana服务是否启动成功:

bash 复制代码
# 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提供了多种工具,可以用于执行各种与Elasticsearch相关的操作,例如创建索引、修改映射、运行查询和聚合等。

这些工具使得开发人员和数据分析师能够轻松地与Elasticsearch集群进行交互,执行各种查询和操作,并进行实时分析和可视化。

Kibana Dev-tools中的常用操作指令

1、索引相关
bash 复制代码
# 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、文档相关
bash 复制代码
# 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工具的出现,我们还是需要尽快掌握运用这些工具的能力,以便提高工作效率。

相关推荐
semantist@语校21 小时前
第五十五篇|从解释约束到结构化认知:京都国际学院的语言学校Prompt工程化实践
大数据·数据库·人工智能·python·百度·prompt·知识图谱
计算机毕业编程指导师21 小时前
【Python大数据选题】基于Spark+Django的电影评分人气数据可视化分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·spark·django·电影评分人气
TDengine (老段)21 小时前
使用 deepseek 快速搭建 TDengine IDMP demo
大数据·数据库·科技·ai·时序数据库·tdengine·涛思数据
Jackyzhe21 小时前
Flink源码阅读:如何生成StreamGraph
大数据·flink
Hello.Reader21 小时前
Flink SQL Window Deduplication按窗口“保留第一条/最后一条”记录(Streaming)
大数据·sql·flink
给朕把屎铲了1 天前
涛思数据库:DB error: some vnode/qnode/mnode(s) out of service (10.703928s)
大数据·数据库·涛思数据
成长之路5141 天前
【地理数据】城市居住人口及工作人口分布数据(更新至2023年)
大数据
ZePingPingZe1 天前
SpringBoot整合Sharding-jdbc分库分表及ES搜索引擎解决无分片键查询
spring boot·elasticsearch·搜索引擎
未来之窗软件服务1 天前
一体化系统(九)高级表格自己编程如何选择——东方仙盟练气期
大数据·人工智能·仙盟创梦ide·东方仙盟·东方仙盟sdk·东方仙盟一体化·万象exce
Mr.wangh1 天前
SpringCloudConfig(配置中心)
大数据·elasticsearch·搜索引擎·springcloud·config