ElasticSearch 学习笔记(三)-----ES的设计原理以及分词器说明

简介: 接上一篇《ElasticSearch 学习笔记(二)-----Elasticsearch的简介以及应用》,这篇,我们来学习ElasticSearch中的两个重要知识点,设计原理与分词器。

概述

接上一篇《ElasticSearch 学习笔记(二)-----Elasticsearch的简介以及应用》,这篇,我们来学习ElasticSearch中的两个重要知识点,设计原理与分词器。

设计原理

1.一个节点Node 运行着ES的实例,一个集群由一个或多个使用着同样名字(cluster.name)的节点组成,分享数据和负载。当Node 从集群中添加或者删除时,集群会重组自己,使数据平摊的更加均匀。

2.集群中需要一台master节点。master节点的左右就是掌管集群的管理工作,例如创建和删除索引。

创建一个索引 - index,shard, cluster

3.将数据添加到ES的前提是,我们需要一个索引(名词)index----一个存储与这个索引相对应数据的地方。实际上,index 仅仅只是一个命名空间来指向一个或多个实际的物理分片(shard)

4.一个分片(shard)是一个比较底层的工作单元来处理这个索引(index)的所有数据的一个切片(slice)。一个shard实际上是一个Lucene实例,在它的能力范围内拥有完整的搜索功能。我们所有文档的索引indexed(动词) 和存储工作都是在shard上,但这是透明的,我们不需要直接和shard通信。而是和我们创建的index(名词)通信。shards 是ES将数据分布式在你的集群的关键,想象下shards是数据的容器,文档存储在shards里,而shards被分配在集群的每一个节点Node里,当你的集群规模增长和降低时,ES会自动的在Node间迁移shards 以保持集群的负载均衡

应用场景

1.海量数据分析引擎

2.站内搜索引擎

3.数据仓库

分词器

分词器选择

ES 默认的分词器对中文的支持很不好,如下图所展示的默认分词器对美国留给伊拉克的是个烂摊子吗的分词结果:

从上图,我们可以看出默认的分词器对中文的支持不够好,其是按照空格来进行分词的。所以,我们需要选用一种能很好支持中文分词的分词器。中文分词我们通常选用IK分词器,以下是一款开源的ik分词器:

https://github.com/medcl/elasticsearch-analysis-ik

安装ik分词器

此处我们的ES版本为6.4.3,安装readme的说明,所以我们选用的分词器也为6.4.3版本

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik

安装之后重启ES,然后,测试下ik 分词器对美国留给伊拉克的是个烂摊子吗的分词效果。

集群状态说明

绿色,绿色表示ES集群处于完全健康的状态,所有主分片和副本分片都正常可用

黄色,黄色表示所有主分片可用,但是部分副本分片不可用

红色,表示部分主分片不可用,这种情况下最好对故障进行排除。

如果集群状态为红色,Head插件显示:集群健康值red。则说明:至少一个主分片分配失败。这将导致一些数据以及索引的某些部分不再可用。 尽管如此, ElasticSearch还是允许我们执行查询,至于是通知用户查询结果可能不完整还是挂起查询,则由应用构建者来决定。

基本用法-restful API

基本的restful API 有如下功能:

1.管理功能

 1.1. 检查集群状态,节点状态,索引的状态以及相关统计数据

 1.2. 管理集群、节点、索引数据以及源数据

2.维护索引

 2.1.基本操作

提供针对索引的基本CURD操作(Create【PUT】, Read【GET】, Update【POST】, and Delete【POST】)。

 2.2. 高级操作

提供分页,排序,过滤等高级操作。

操作示例

1.检查集群状态

curl localhost:9200/_cat/health?v

2.检查节点状态

curl localhost:9200/_cat/nodes?v

3.查询所有索引

curl localhost:9200/_cat/indices?v

postman的操作示例详细参见:

https://download.csdn.net/download/u014534808/10991675

部分细节说明:

  1. 地址栏中的变量设置,如下图中的eshost变量,我们可以在设置中增加一个环境变量。

2. 创建结构化索引

如上图所示,{{eshost}}/title 表示创建一个名称为 title 的索引,其属性有titleid,titlename,description,createTime。 其中属性的 type 表示匹配类型, keyword 表示关键字全匹配, text 表示模糊匹配。运行后的结果是:

3. 给索引插入数据

按照json 的数据格式,插入数据,插入后的结果如下:

4. 查询索引数据

我们用以下数据作为查询数据,看看查询结果

返回结果说明:

总共查询了5个分片区,匹配到了两条记录。其中_score表示匹配度,匹配度越高,_score 值也就越大,其是根据description属性来匹配的。hits 里表示匹配到的结果,这个等同于 lucene 中的hits。

{
    "took": 11,
    "timed_out": false,
    "_shards": {    
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 2,
        "max_score": 2.1216555,
        "hits": [
            {
                "_index": "title",
                "_type": "_doc",
                "_id": "1",
                "_score": 2.1216555,
                "_source": {
                    "titleid": "12",
                    "titlename": "这是一篇好文章",
                    "description": "今天是个好日子,又在家里宅了一天",
                    "createTime": "2019-03-04 21:18:18"
                }
            },
            {
                "_index": "title",
                "_type": "_doc",
                "_id": "2",
                "_score": 2.0137746,
                "_source": {
                    "description": "今天是个好日子,所以要出去走走",
                    "titlename": "美好的一天"
                }
            }
        ]
    }
}

总结

本文我们先介绍了ElasticSearch的设计原理,以及其应用场景。接着,我们介绍了一款标准的中文分词器,最后,我们介绍了基本ES 中基本的restful API, 并通过postman

参考文献

ElasticSearch原理简介进行了测试。

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
自然语言处理 大数据 应用服务中间件
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
293 5
|
自然语言处理 Java 网络架构
elasticsearch学习三:elasticsearch-ik分词器的自定义配置 分词内容
这篇文章是关于如何自定义Elasticsearch的ik分词器配置以满足特定的中文分词需求。
704 0
elasticsearch学习三:elasticsearch-ik分词器的自定义配置 分词内容
|
数据可视化 Java Windows
Elasticsearch入门-环境安装ES和Kibana以及ES-Head可视化插件和浏览器插件es-client
本文介绍了如何在Windows环境下安装Elasticsearch(ES)、Elasticsearch Head可视化插件和Kibana,以及如何配置ES的跨域问题,确保Kibana能够连接到ES集群,并提供了安装过程中可能遇到的问题及其解决方案。
Elasticsearch入门-环境安装ES和Kibana以及ES-Head可视化插件和浏览器插件es-client
|
8月前
|
JSON 安全 数据可视化
Elasticsearch(es)在Windows系统上的安装与部署(含Kibana)
Kibana 是 Elastic Stack(原 ELK Stack)中的核心数据可视化工具,主要与 Elasticsearch 配合使用,提供强大的数据探索、分析和展示功能。elasticsearch安装在windows上一般是zip文件,解压到对应目录。文件,elasticsearch8.x以上版本是自动开启安全认证的。kibana安装在windows上一般是zip文件,解压到对应目录。elasticsearch的默认端口是9200,访问。默认用户是elastic,密码需要重置。
4511 0
|
存储 缓存 监控
极致 ElasticSearch 调优,让你的ES 狂飙100倍!
尼恩分享了一篇关于提升Elasticsearch集群的整体性能和稳定性措施的文章。他从硬件、系统、JVM、集群、索引和查询等多个层面对ES的性能优化进行分析,帮助读者提升技术水平。
|
测试技术 API 开发工具
ElasticSearch的IK分词器
ElasticSearch的IK分词器
260 7
|
存储 JSON Java
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
1316 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
|
自然语言处理 搜索推荐 Java
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(一)
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图
346 0
|
存储 自然语言处理 搜索推荐
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(二)
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(二)
325 0
|
9月前
|
安全 Java Linux
Linux安装Elasticsearch详细教程
Linux安装Elasticsearch详细教程
1804 64

热门文章

最新文章