跳转至

ElasticSearch

约 438 个字 83 行代码 预计阅读时间 4 分钟

ElasticSearch、kibana及IK分词器的安装(7.17.18版本)

前置要求

安装docker

创建docker网络

docker network create es-net

镜像拉取

ElasticSearch

docker pull elasticsearch:7.17.18

kibana

docker pull kibana:7.17.18

镜像启动

启动ES镜像

docker run -d \
  --name es \
  -e "ES_JAVA_OPTS=-Xms512m -Xmx1024m" \
  -e "discovery.type=single-node" \
  -e "xpack.security.enabled=true" \
  -v es-data:/usr/share/elasticsearch/data \
  -v es-plugins:/usr/share/elasticsearch/plugins \
  --privileged \
  --network es-net \
  -p 9200:9200 \
  -p 9300:9300 \
  elasticsearch:7.17.18

进入ES容器内部

docker exec -it es /bin/bash

设置内置用户的密码

bin/elasticsearch-setup-passwords interactive

配置 Kibana 连接到安全的 Elasticsearch

docker run -d \
  --name kibana \
  --net es-net \
  -p 5601:5601 \
  -e "ELASTICSEARCH_HOSTS=http://es:9200" \
  -e "ELASTICSEARCH_USERNAME=kibana_system" \
  -e "ELASTICSEARCH_PASSWORD=<your_kibana_system_password>" \
  kibana:7.17.18

验证安装

  • Elasticsearch: 打开浏览器访问 <ip>:9200,你应该会看到 Elasticsearch 的 JSON 响应。由于启用了安全功能,你需要提供用户名和密码。
  • Kibana: 打开浏览器访问 <ip>:5601,你应该会看到 Kibana 的界面。由于启用了安全功能,你需要提供用户名和密码。

安装IK分词器插件

进入ES内部

docker exec -it es /bin/bash

使用 curl 命令下载 IK 分词器插件

curl -L -O https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.18/elasticsearch-analysis-ik-7.17.18.zip

安装 IK 分词器插件

elasticsearch-plugin install file:///usr/share/elasticsearch/elasticsearch-analysis-ik-7.17.18.zip

验证 IK 分词器的安装

ls /usr/share/elasticsearch/plugins

重启 Elasticsearch 容器

docker restart es

ES 语法

参考文档:Elasticsearch__Matthew的博客-CSDN博客

索引相关操作

ES 中的索引大致相当于 SQL 中的表格

创建索引库

PUT /<索引库名>
{
  "mappings": {
    "properties": {
      "<字段名>": {
        "<属性>": "<属性值>",
        "analyzer": "ik_smart"
      },
      "email": {
        "type": "keyword",
        "index": false
      },
      "name": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "keyword"
          },
          "lastName": {
            "type": "keyword"
          }
        }
      }
    }
  }
}

创建索引库时候的一些注意点

  1. 对于字符串类型的数据,如果需要分词,就把类型设置为 text,如果不需要分词,就把类型设置为 keyword。
  2. 对于不需要参加搜索的数据,将 index 的属性值设置为 false。
  3. 如果想要对多个字段进行搜索,可以额外创建一个 all 字段,然后将需要进行搜索的字段使用 copy_to 属性 copy 到 all 字段。

查询索引库

GET /<索引库名>

删除索引库

DELETE /<索引库名>

添加新的字段

PUT /<索引库名>/_mapping
{
  "properties": {
    "age": {
      "type": "integer"
    }
  }
}

文档相关操作

文档相当于数据库中的一条一条数据

插入文档

POST /<索引库名>/_doc/<id>
{
  "<字段名>": <具体数据>,
  "email": "zy@itcast.cn",
  "name": {
    "firstName": "云",
    "lastName": "赵"
  }
}

查询文档

GET /<索引库名>/_doc/<id>

删除文档

DELETE /<索引库名>/_doc/<id>

修改文档

全局修改:会删除旧文档,添加新文档。既能修改,又能新增。

PUT /索引库名/_doc/文档id
{
    "字段1": "值1",
    "字段2": "值2",
    // ...luo
}