🌟 一文掌握 《Elasticsearch:8.0 》

1,066 阅读6分钟

一、安装Elasticsearch:8.10.4(Windows版)

1.1 下载

elasticsearch-8.10.4-windows-x86_64:百度网盘下载连接

elasticsearch-8.10.4-windows-x86_64:官方下载连接

1.2 解压、修改配置文件

解压

image.png

修改配置文件config/elasticsearch.yml

#  节点名称(名称任意即可,若不设置则为系统的hostname)
node.name: node-1
#  允许远程访问
network.host: 0.0.0.0
# 设置单节点启动
discovery.type: single-node
#  关闭IP信息下载
ingest.geoip.downloader.enabled: false

image.png

修改配置文件config/jvm.options

-Xms512m
-Xmx512m

image.png

1.3 启动

打开 cmd 进入到 elasticsearch /bin目录

输入: chcp 65001 :解决中文乱码

接着输入elasticsearch.bat

然后复制es账号密码:

image.png

image.png

image.png

在浏览器输入:

https://127.0.0.1:9200/

image.png

image.png

二、安装kibana(Window版)

2.1 什么是kibana

Kibana是一个开源的数据分析和可视化平台,它是Elastic Stack的成员之一,设计用于和Elasticsearch协作。用户可以通过Kibana搜索、查看和交互存储在Elasticsearch索引中的数据,并使用各种图表进行高级数据分析及展示。此外,Kibana还提供了基于浏览器的用户界面,可以快速创建仪表板,实时显示Elasticsearch查询动态。

2.2 下载

kibana-8.10.4:百度网盘链接

kibana-8.10.4:官方链接

2.3 解压、修改配置文件

解压

image.png

修改配置文件config/kibana.yml

# 国际化 - 中文
i18n.locale: "zh-CN"
server.host: 0.0.0.0

image.png

获取es的token

cmd 并进入 elasticsearch 的bin目录

image.png

输入

elasticsearch-create-enrollment-token -s kibana

image.png

进入到kibana的bin目录

输入 kibana-setup

粘贴token

image.png

2.4 启动

双击 bin/kibana.bat

在浏览器输入

http://127.0.0.1:5601

输入启动es的kibana.bat密码

image.png

如果忘记复制或者忘记保存了,需要重置es账号密码

cmd 窗口进入 elasticsearch 的 bin目录

输入 elasticsearch-reset-password -u elastic

输入y

保存es和kibana,此时两者的账号密码是一样的

image.png

image.png

三、Elasticsearch:8.0 的基础语法

image.png

3.1 索引操作

① 创建索引

PUT test

image.png

再次运行幂等操作,会提示索引已经存在

image.png

② 查询索引

GET test

image.png

查询不存在的索引 GET test01

image.png

③ 查询所有索引

GET _cat/indices

image.png

字段详解

字段意思
green当前服务器健康状态:green(集群完整) yellow(单点正常、集群不完整)red(单点不正常)
open索引打开、关闭状态
test索引名
-KcnVZDtTJCejbYhp7tAgA索引统一编号
1主分片数量
1副本数量
0可用文档数量
0文档删除状态(逻辑删除)
248b主分片和副分片整体占空间大小
248b主分片占空间大小

④ 删除索引

DELETE test01

image.png

删除一个不存在的索引,同样会报错

image.png

3.2 文档操作

① 创建文档

PUT test/_doc/1001
{
  "name" : "小黄",
  "sex" : "雄"
}

image.png

image.png

② 查询文档

GET test/_doc/1001

image.png

③ 修改文档

PUT test/_doc/1001
{
  "name" : "小黄",
  "sex" : "雄",
  "age" : 18
}

image.png

如果修改的文档内容比之前的少,则少的内容直接丢失

image.png

④ 删除文档

DELETE test/_doc/1001

image.png

⑤ 查询所有文档

GET test/_search

image.png

3.3 条件查询

准备数据

POST test/_doc/1002
{
  "name" : "小黄",
  "sex" : "雄"
}

POST test/_doc/1003
{
  "name" : "黄",
  "sex" : "雄"
}

POST test/_doc/1004
{
  "name" : "小",
  "sex" : "雄"
}

image.png

①查询字段

GET test/_search
{
  "query": {
    "match": {
      "name": "小"
    }
  }
}

image.png

GET test/_search
{
  "query": {
    "match": {
      "name": "小黄"
    }
  }
}

image.png

GET test/_search
{
  "_source": ["name"], 
  "query": {
    "terms": {
      "name": ["小"]
    }
  }
}

image.png

3.4 聚合搜索

新增三条文档

POST test1/_doc/2002
{
  "name" : "小黄",
  "sex" : "雄",
  "age" : 1
}

POST test1/_doc/2003
{
  "name" : "黄",
  "sex" : "雄",
  "age" : 2
}

POST test1/_doc/2004
{
  "name" : "小",
  "sex" : "雄",
  "age" : 3
}

①平均值

POST test1/_search
{
  "aggs": {
    "avg_age": {
      "avg": {
        "field": "age"
      }
    }
  }
}

image.png

②求和

POST test1/_search
{
 "aggs": {
   "sum_age": {
     "sum": {
       "field": "age"
     }
   }
 }
}

image.png

③最大值

POST test1/_search
{
 "aggs": {
   "max_age": {
     "max": {
       "field": "age"
     }
   }
 }
}

image.png

3.5 索引模板

  • ES的索引模板(Index templates)是用于创建新索引的一种预定义模板。这个模板主要包含两部分:settings(设置)和mappings(映射)。

  • 通过索引模板,可以将已经创建好的某个索引的参数设置(如分片数、副本数、tranlog同步条件、refresh等)和索引映射保存下来。在创建新索引时,只需指定要使用的模板名,就可以直接重用该模板中已经定义好的设置和映射。这种方式可以简化索引的创建过程,并确保多个索引之间具有一致的结构和配置。

① 创建模板

PUT _index_template/test_template
{
  "index_patterns": ["*"], // 匹配所有索引名称,您可以根据需要修改这里的模式
  "template": {
    "mappings": {
      "properties": {
        "name": {
          "type": "text"
        },
        "sex": {
          "type": "keyword"
        }
      }
    }
  },
  "priority": 1, // 优先级,如果有多个模板匹配,将使用优先级最高的模板
  "version": 1, // 模板版本,用于后续管理
  "_meta": {
    "description": "Test index template for defining name as text and sex as keyword"
  } 
}

image.png

  • index_patterns 设置为 ["*"],意味着这个模板会匹配所有新创建的索引。在实际使用中,您应该根据需要调整这个模式,以确保模板只应用于特定的索引。例如,如果您希望模板仅应用于以test_开头的索引,则可以将index_patterns设置为["test_*"]
  • template 部分定义了索引的映射(mappings),其中name字段被设置为text类型,适用于全文搜索,而sex字段被设置为keyword类型,适用于关键词搜索和聚合。
  • priority 设置了模板的优先级,如果多个模板可以匹配同一个索引,Elasticsearch将使用优先级最高的模板。
  • version 用于指定模板的版本号,这在您后续需要更新或管理模板时很有用。
  • _meta 部分是可选的,用于提供有关模板的额外信息,如描述。

② 查看模板

GET _index_template/test_template

image.png

3.6 中文分词

① 什么是IK分词器

ES的IK分词器是一种基于中文文本的分词器,是Elasticsearch中文分词的一种实现。它采用了自然语言处理技术,可以将中文文本进行切分,抽取出其中的词汇,从而提高搜索引擎对中文文本的搜索和检索效率。这种分词器的原理是使用“正向最大匹配”和“逆向最大匹配”的分词算法,通过对文本进行多次切分,最终确定最优的分词结果。IK分词器支持细粒度分词、多种分词模式,还可以支持自定义词典和拼音分词,且易于集成和使用。总的来说,IK分词器是一款功能全面、高效实用的中文分词工具,可广泛应用于各种中文文本处理场景。

因为es会把每个中文当成一个关键字,比如我是一个好人,这五个字都是关键字,我们一般希望是,我、是、好人、这四个是关键字,因此需要IK分词器

② 安装Ik分词器

elasticsearch-analysis-ik-8.10.4:百度网盘链接

elasticsearch-analysis-ik-8.10.4:官方链接

③解压到elasticsearch-8.10.4/plugins

在plugins新建一个文件夹elasticsearch-analysis-ik-8.10.4 否则es会闪退

image.png

重启es

④ 使用IK分词器

GET _analyze
{
 "analyzer": "standard",
 "text": ["我是一个好人"]
}

image.png

ik_smart: 最少切分

GET _analyze
{
 "analyzer": "ik_smart",
 "text": ["我是一个学生"]
}

image.png

Ik_max_word:最细粒度划分

GET _analyze
{
 "analyzer": "Ik_max_word",
 "text": ["我是一个学生"]
}

![image.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/fe8cccea7c2642d6abfc829d5e9d3d0e~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=1671&h=847&s=120971&e=png&b=f0f4f9)

四、总结

本文全面介绍了Elasticsearch和Kibana的安装与配置,深入探究了Elasticsearch在索引管理、文档操作、条件查询、聚合搜索以及索引模板应用等方面的基础语法。此外,还重点介绍了IK分词器的安装与使用,从而显著增强了Elasticsearch在中文文本处理上的能力。通过本文的详尽指引,读者不仅能顺利搭建起Elasticsearch和Kibana系统,更能掌握其核心操作技巧,实现数据处理效率的多倍提升,为构建强大、高效的搜索与数据分析解决方案提供了有力支撑。