ElasticSearch基本使用

发布时间 2023-10-31 15:25:22作者: 星光Starsray

概述

安装

基本概念

使用

客户端工具

ES的服务端安装完成后,以及对基本概念有一定的了解,进一步使用肯定要借助一些客户端,由于ES的使用都是基于REST风格的API,因此可以使用支持HTTP请求的REST API调用工具都可以进行服务端操作,例如PostMan,这里推荐几个常用的工具如Kibana,或者Edge浏览器中可以使用的扩展插件Elasticvue、ES-client等。

基础语法

类比于关系型数据库查询的SQL语言,在ES中使用DSL语言与服务器进行交互。ES中关于数据的操作交互可以分为两大类,索引(index)操作和文档(document)操作。接下来关于REST API的调用使用Elasticvue工具进行演示。使用REST请求,因此查用的请求类型也分别对应POST、PUT、GET、DELETE。

操作索引

创建索引(映射)

索引和映射可以同时创建,也可以先创建索引,再进行映射的创建。

{
    "mappings": {
        "message": {
            "properties": {
                "messageId": {
                    "type": "keyword"
                },
                "msgContent": {
                    "type": "text"
                },
                "msgTitle": {
                    "type": "text"
                },
                "receiveDate": {
                    "type": "date",
                    "format": "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || yyyy-MM-dd HH:mm"
                },
                "subject": {
                    "type": "text"
                },
                "userId": {
                    "type": "keyword"
                },
                "userUrl": {
                    "type": "keyword"
                }
            }
        }
    }
}

image

删除索引

DELETE message_idx

image

重建索引

一般创建索引时也就意味着数据结构已经确定,如果需要修改mapping信息时,那就需要对索引进行重建。

POST _reindex
{
  "source": {
    "index": "test_index"
  },
  "dest": {
    "index": "test_index_new"
  }
}

image
如果重建时间可能太长,可以添加参数?wait_for_completion=false直接返回taskId。

别名

索引别名是用于引用一个或多个现有索引的辅助名称。简单来说就是,一个索引可以通过别名进行调用,也可以使用本身的名称进行调用。一个索引可以绑定多个别名,一个别名也可以绑定多个索引。使用别名的好处主要有以下几点:

  1. 索引切换:通过使用别名,可以将一个别名绑定到一个或多个索引上。这样,在索引切换或滚动升级时,可以更新别名的绑定,而不需要修改应用程序中对索引的引用。这使得索引维护和数据迁移更加灵活和无缝。

  2. 查询分发:别名可以作为查询的目标,将查询请求分发到多个索引上。这对于在多个索引上执行相同的查询非常有用,尤其是当索引按时间进行分割或分片时。通过使用别名,可以将查询发送到所有相关的索引,而不需要显式指定每个索引的名称。

  3. 索引别名过滤:别名还可以与过滤器结合使用,以将查询限制为特定的索引或索引模式。通过为别名定义过滤条件,可以创建只包含满足特定条件的文档的虚拟索引视图。这对于数据分区、安全性和权限控制非常有用。

  4. 索引重命名:通过修改别名的绑定,可以实现索引的重命名操作。这在需要更改索引名称或将索引从一个集群迁移到另一个集群时非常有用。

通过使用别名,可以提供更灵活、更抽象的索引命名和查询操作,使得索引的管理和使用更加方便和可靠。

别名的操作使用POST _aliases,使用如下所示:

绑定/解绑别名
# 绑定
POST _aliases
{
  "actions" : [
    { "add" : { "index" : "test_index", "alias" : "test_index_aliases" } }
  ]
}

# 解绑
POST /_aliases
{
  "actions" : [
    { "remove" : { "index" : "test_index", "alias" : "test_index_aliases" } }
  ]
}
更换别名
POST /_aliases
{
  "actions" : [
    { "remove" : { "index" : "test_index", "alias" : "test_index_aliases" } },
    { "add" : { "index" : "test_index", "alias" : "test" } }
  ]
}
绑定多个别名
POST /_aliases
{
  "actions" : [
    { "add" : { "index" : "test_index_1", "alias" : "test" } },
    { "add" : { "index" : "test_index_2", "alias" : "test" } }
  ]
}

操作文档

其他