每个es有对应的jdk版本,如果本地已经配置jdk环境变量,需要单独设置,
具体官方教程:elasticsearch官方使用教程
历史版本下载:elasticsearch历史版本下载
各版本兼容览表:elasticsearch兼容览表

注意:非系统盘安装elasticsearch的目录不能有空格,不然后续安装其他插件时找不到路径

比如我是es 7.10.2版本,在bin目录下修改elasticsearch.bat文件指定自带jdk目录

@echo off

setlocal enabledelayedexpansion
setlocal enableextensions

::添加这句话
set "JAVA_HOME=D:\Program\elasticsearch-7.10.2\jdk"

如果是更高的版本,需要在环境变量中添加"ES_JAVA_HOME"指定自带jdk目录

如果电脑配置较低,可以修改堆内存大小,进入config目录修改jvm.options文件,找到-Xms和-Xmx去掉##注释,比如我只需要512m。

-Xms512m
-Xmx512m

# 启动

进入bin目录,点击elasticsearch.bat文件即可
等到打印started,访问http://localhost:9200/查看是否成功

# 安装ElasticSearch-head插件

1、需要node环境,执行cmd命令检查是否安装,没有则自行安装。


node -v

2、安装 Grunt 工具(node环境下)


 npm install -g grunt-cli

执行cmd查看是否成功


grunt -version

QQ截图20240716014120.png

3、安装ElasticSearch-head,逐步执行以下cmd命令符(第一条需要git环境,要么单独下载项目)

git clone git://github.com/mobz/elasticsearch-head.git

cd elasticsearch-head

npm install

npm run start

访问 http://localhost:9100/,看到页面代表成功,但集群概览为空,需要配置elasticsearch允许跨域才行

修改elasticsearch目录下config/elasticsearch.yml文件,尾部追加以下内容,重启elasticsearch.bat能看到集群健康值

http.cors.enabled: true 
http.cors.allow-origin: "*"
http.cors.allow-headers: "*"

# 安装 kibana

启动es访问http://localhost:9200/查看es信息,下载Kibana的版本version和build必须和elasticsearch对应【oss代表开源版本,商业:Basic、Standard、Gold、Platinum】

QQ截图20240716031408.png

例如我当前下载版本:对应7.10.2和oss版本
QQ截图20240716033926.png

下载地址:Kibana各版本

进入kibana/bin目录,点击kibana.bat启动
访问 http://localhost:5601检查是否成功

中文版界面:
修改 config\kibana.yml 文件,将 i18n.locale: “en”, 改为 i18n.locale: “zh-CN”

# 安装ik中文分词器

下载地址:https://release.infinilabs.com/analysis-ik/stable/
1、需要下载与elasticsearch一样的版本,下载好压缩包放到elasticsearch目录下
2、启动elasticsearch
3、新打开cmd窗口进入elasticsearch/bin目录,执行安装命令(file:///后面是安装包路径)


elasticsearch-plugin install file:///D:\Programs\elasticsearch-7.10.2/elasticsearch-analysis-ik-7.10.2.zip

QQ截图20240716170351.png
4、验证安装,bin目录下执行cmd命令,会看到插件列表


elasticsearch-plugin list

5、测试ik分词器,启动kibana访问http://localhost:5601/,找到Dev Tools页面,输入内容


GET _analyze
{
  "analyzer": "ik_smart",
  "text": "lzs博客教程"
}

QQ截图20240716172333.png

_analyze:分词器名称(固定)
ik_max_word:允许句子的字反复出现,只要这些字在词库中出现过,就会被拆分出来
ik_smart:在分词时,每个字在句子里只会出现一次
tetx:需要分词文本

## 创建一个ik分词器索引,其中content执行ik规则
PUT /my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "ik_max_word": {
          "type": "custom",
          "tokenizer": "ik_max_word"
        },
        "ik_smart": {
          "type": "custom",
          "tokenizer": "ik_smart"
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "content": {
        "type": "text",
        "analyzer": "ik_max_word",
        "search_analyzer": "ik_smart"
      }
    }
  }
}
## PUT /my_index:创建一个名为my_index的索引。
## settings:配置索引的设置。这里定义了两个自定义分析器ik_max_word和ik_smart,它们使用IK分词器。
## mappings:定义索引的映射。在这个示例中,有一个字段content,类型为text,使用ik_max_word作为索引时的分析器,ik_smart作为搜索时的分析器。


自定义分词器字典
进入elasticsearch-7.10.2\config\analysis-ik目录,自定义创建文件“custom.dic”,内容写你需要的分词(正常情况下springboot是不会拆分的,但是自定义字典后,会拆分成springboot、spring、boot)

Springboot
Spring
boot

打开IKAnalyzer.cfg.xml文件,修改内容,追加字典文件

<?xml version="1.0" encoding="UTF-8"?>
<properties>
    <!--用户可以在这里配置自己的扩展字典 -->
    <entry key="ext_dict">custom.dic</entry>
</properties>


# es的一些用法

_search 是用于执行搜索请求的固定端点

  • query: 用于定义查询部分。
  • match: 一种查询类型,用于执行全文搜索。
  • term: 用于精确匹配的查询。
  • range: 用于范围查询。
  • bool: 用于组合多个查询条件。
  • must, should, must_not: 在bool查询中使用,用于定义必须匹配、应该匹配或必须不匹配的条件。
  • filter: 用于过滤结果的条件。
## 搜索单个索引index1中的文档
POST /index1/_search
## 搜索多个索引中的文档
POST /index1,index2/_search
## 搜索整个集群中的文档
POST /_search
{
  "query": {
    "match": {
      "content": "国歌"
    }
  }
}


_doc 是用于操作单个文档(创建、更新、删除、获取)的固定端点

## 创建或更新文档1(存在id为1则更新,否则新增)
POST /my_index/_doc/1
{
  "content": "中华人民共和国国歌"
}

## 创建一个自动生成ID的文档
POST /my_index/_doc
{
  "content": "中华人民共和国国歌"
}

## 获取文档1
GET /my_index/_doc/1

## 删除文档1
DELETE /my_index/_doc/1


创建索引

## 简单索引
PUT /my_index

## 更新该索引的副本分片为0(单机不需要)
## number_of_replicas副本分片,number_of_shards主分片
PUT /my_index/_settings
{
  "index": {
    "number_of_replicas":0
  }
}

_cat 端点
_cat 端点提供了对集群、索引、节点等信息的简单和易读的输出。它通常用于检索和监视集群的健康状态、节点信息和索引统计等。

  • 查看集群健康状况:GET /_cat/health?v
  • 查看节点信息:GET /_cat/nodes?v
  • 查看索引列表:GET /_cat/indices?v

_cluster 端点
_cluster 端点用于管理集群级别的操作和设置。

  • 查看集群状态:GET /_cluster/state
  • 查看集群健康状况:GET /_cluster/health
  • 查看集群设置:GET /_cluster/settings

_aliases 端点
_aliases 端点用于管理索引的别名。

  • 获取别名信息:GET /_aliases
  • 创建或更新别名:POST /_aliases
  • 删除别名:DELETE /_aliases

_bulk 端点
_bulk 端点用于批量操作文档的添加、更新和删除。

  • 批量添加文档:POST /_bulk
  • 批量更新文档:POST /_bulk
  • 批量删除文档:POST /_bulk

_snapshot 端点
_snapshot 端点用于管理和操作快照(备份和恢复)。

  • 创建快照存储库:PUT /_snapshot/my_backup
  • 创建快照:PUT /_snapshot/my_backup/snapshot_1
  • 恢复快照:POST /_snapshot/my_backup/snapshot_1/_restore

其他端点
除了上述常见端点外,还有一些专门用于监控、管理和安全的端点,如:
_nodes:用于节点相关的信息和操作。
_tasks:用于查看和管理正在执行的任务。
_sql:用于执行 SQL 查询。
_ingest:用于管道处理(Ingest Pipeline)。