微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

仿牛客网社区开发——第6章 Elasticsearch,分布式搜索引擎

ElasticSearch 入门

ElasticSearch 简介

  • 一个分布式的、Restful 风格的搜索引擎
  • 支持对各种类型的数据的检索
  • 搜索速度快,可以提供实时的搜索服务
  • 便于水平扩展,每秒可以处理 PB 级海量数据

ElasticSearch 术语

  • 索引:相当于数据库中的库,6.0 版本后相当于表
  • 类型:一开始相当于数据库的表,6.0 版本之后逐渐被弃用
  • 文档:存储在 Elasticsearch 中的一个 JSON 格式的字符串,它就像在关系数据库中表的一行
  • 字段:相当于关系数据库中表的列,每个字段都对应一个字段类型
  • 集群:集群由一个或多个节点组成,对外提供服务
  • 节点:节点是组成集群的基本服务单元,集群中的每个运行中的服务器都可称之为节点
  • 分片:当索引的数据量太大时,受限于单个节点的内存、磁盘处理能力等,节点无法足够快地响应客户端的请求,此时需要将一个索引上的数据进行水平拆分。拆分出来的每个数据部分称之为一个分片
  • 副本:对分片的备份,一个分片可以包含多个副本

下载安装 ElasticSearch

官网地址:https://www.elastic.co/cn/

  • 下载前要注意版本和当前 SpringBoot 中父 Pom 中声明的版本(经过测试没问题的、兼容的版本)是否一致,ElasticSearch 在 6-7 版本有较大变化
  • 配置集群的名字存放数据的位置存放日志的路径
cluster.name: Nowcoder
path.data: D:\Java\Java\ElasticSearch\data
path.logs: D:\Java\Java\ElasticSearch\logs
  • 配置环境变量,将其 bin 目录加到系统变量的 Path 下

安装中文分词工具

  • Github 搜索 Elasticsearch ik,注意要与 Elasticsearch 版本相对应
  • 安装路径固定解压到 Elasticsearch 安装目录的 plugins 下的 ik 目录

  • 可以在 IKAnalyzer.cfg.xml 中配置自己的扩展字典(或扩展停止词字典,一般不需要)

安装 Postman (方便测试,非必须)

以客户端的形式对 Elasticsearch 服务器进行操作(非必须,也可以使用命令行,但是更加麻烦)

官网:https://www.postman.com

常用命令(使用命令行)

启动服务器,执行 bat 命令

Windows 用 .bat 的,Linux / Unix 用不带 .bat 的

查看 ES 集群的健康状态

curl -X GET "localhost:9200/_cat/health?v"

查看节点

curl -X GET "localhost:9200/_cat/nodes?v"

当前只有一个节点

查看索引

curl -X GET "localhost:9200/_cat/indices?v"

当前没有索引

创建索引

curl -X PUT "localhost:9200/test"

yellow 不是最健康的状态,没有备份

删除索引

curl -X DELETE "localhost:9200/test"

常用命令(使用 Postman)

(和上述重复的不再演示)

  • 如果路径中指定了不存在的索引会自动建立索引
  • _doc 是类型占位符,在 7.0 版本中删除了类型
  • 在 Body 里使用 JSON 字符串添加数据
  • 服务器地址/索引/占位符/id
  • 更改数据可以使用 PUT,会替换旧数据

向 Elasticsearch 服务器添加数据

更新命令也一样

PUT: localhost:9200/test/_doc/3

查询指定数据

GET: localhost:9200/test/_doc/3

删除指定数据

DELETE: localhost:9200/test/_doc/5

测试中文搜索分词

添加几条数据

不加条件:

GET: localhost:9200/test/_search

加条件:

GET: localhost:9200/test/_search?q=content:后端开发

 复杂搜索

GET: localhost:9200/test/_search
{
    "query":{
        "multi_match":{
            "query":"互联网开发",
            "fields":["title","content"]
        }
    }
}

 

注意点:

  1. 索引、类型、文档、字段的含义,和数据库中各个概念的对应
  2. ES 的版本以及中文分词工具的版本
  3. Postman 的使用
  4. 常用命令,尤其是复杂搜索

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐