ElasticSearch入门教程

一、Elasticsearch 概述

1.1、ElasticSearch是什么?

官网解释如图所示:
在这里插入图片描述
The Elastic Stack, 包括 Elasticsearch、Kibana、Beats 和 Logstash(也称为 ELK Stack)。能够安全可靠地获取任何来源的任何格式的数据,然后对数据进行搜索、分析和可视化。

Elaticsearch,简称为 ES,ES 是一个开源的高扩展的分布式全文搜索引擎,是整个 Elastic Stack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB 级别的数据。

1.2、ElasticSearch的安装

Windows 版的 Elasticsearch ,官网下载地址点击下载、解压,解压后的 Elasticsearch 的目录结构如下:

在这里插入图片描述
进入 bin 目录,点击 elasticsearch.bat 启动 ES 服务;浏览器输入:http://localhost:9200,如图所示,开启成功。本次下载是7.8.0版本。

在这里插入图片描述

二、ElasticSearch的使用

2.1、索引操作

索引的概念:

一个索引由一个名字来标识(必须全部是小写字母),并且当我们要对这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。在一个集群中,可以定义任意多的索引。

  1. 创建索引,对比关系型数据库,创建索引就等同于创建数据库

    在 Postman 中,向 ES 服务器发 PUT 请求 :http://127.0.0.1:9200/test_a

在这里插入图片描述
2)查看所有索引

在 Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/_cat/indices?v

请求路径中的_cat 表示查看的意思,indices 表示索引,v显示列的属性名
在这里插入图片描述

  1. 查看单个索引
    在 Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/test_a
    在这里插入图片描述

  2. 删除索引
    在 Postman 中,向 ES 服务器发 DELETE 请求 :http://127.0.0.1:9200/test_a
    在这里插入图片描述

2.2、文档操作


一个文档是一个可被索引的基础信息单元,也就是一条数据。

  1. 新建文档

索引已经创建,接下来创建文档,并添加数据。这里的文档可以类比为关系型数据库中的表数据,添加的数据格式为 JSON格 式。

在 Postman 中,向 ES 服务器发 POST 请求 :http://127.0.0.1:9200/test_a/_doc/102

其中:1表示是自定义唯一性标识,需要在创建时指定;如果没有指定数据唯一性标识(ID),默认情况下,ES 服务器会随机
生成一个。

在这里插入图片描述
此处发送请求的方式必须为 POST,不能是 PUT,否则会发生错误;

  1. 查看文档

查看文档时,需要指明文档的唯一性标识,类似于 MySQL 中数据的主键查询

在 Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/test_a/_doc/101

在这里插入图片描述

  1. 修改文档

和新增文档一样,输入相同的 URL 地址请求,如果请求体变化,会将原有的数据内容覆盖.

在 Postman 中,向 ES 服务器发 POST 请求 :http://127.0.0.1:9200/test_a/_doc/101

在这里插入图片描述

  1. 删除文档

删除一个文档不会立即从磁盘上移除,它只是被标记成已删除(逻辑删除)。

在 Postman 中,向 ES 服务器发 DELETE 请求 :http://127.0.0.1:9200/test_a/_doc/104

在这里插入图片描述

2.3、映射操作

mapping 是处理数据的方式和规则方面做一些限制,如:某个字段的数据类型、默认值、分析器、是否被索引等等。

  1. 创建映射

在 Postman 中,向 ES 服务器发 PUT 请求 :http://127.0.0.1:9200/student/_mapping

在这里插入图片描述
2) 查看映射

在 Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/test_b/_mapping

在这里插入图片描述

2.4、高级查询操作

  1. 查询所有文档

请求参数: “query”:这里的 query 代表一个查询对象,里面可以有不同的查询属性。
“match_all”:查询类型,例如:match_all(代表查询所有), match,term , range 等等 {查询条件}:查询条件会根据类型的不同,写法不同。

在 Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/test_a/_search

在这里插入图片描述

  1. 匹配查询

match 匹配类型查询,会把查询条件进行分词,然后进行查询,多个词条之间是 or 的关系

在这里插入图片描述

  1. 字段匹配查询

multi_match 与 match 类似,不同的是它可以在多个字段中查询。

在这里插入图片描述

  1. 关键字精确查询

term 查询,精确的关键词匹配查询,不对查询条件进行分词。

在这里插入图片描述

  1. 多关键字精确查询
    terms 查询和 term 查询一样,但它允许你指定多值进行匹配。
    如果这个字段包含了指定值中的任何一个值,那么这个文档满足条件,类似于 mysql 的 in
    在这里插入图片描述注意:

精确匹配 term或者terms,如果要使用中文查询,是查不出来的,要改成***.keyword 如果是数字,可以不用加.keyword

  1. 指定查询字段

默认情况下,Elasticsearch 在搜索的结果中,会把文档中保存在_source 的所有字段都返回。如果我们只想获取其中的部分字段,我们可以添加_source 进行过滤。

在这里插入图片描述

我们也可以通过:
includes:来指定想要显示的字段
excludes:来指定不想要显示的字段

在这里插入图片描述

  1. 组合查询
    bool把各种查询通过must(必须 )、must_not(必须不)、should(应该)的方式进行组合
# must 选项看似杂乱,目的是理解ES的搜索原理。
{
    "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "title": "米耳机123"
                    }
                }
            ],
            "must_not": [
                {
                    "match": {
                        "price": 168
                    }
                }
            ],
            "should": [
                {
                    "match": {
                        "images": "http://www.xiaomi.com/xm2.png"
                    }
                }
            ]
        }
    }
}

在这里插入图片描述

  1. 范围查询

range 查询找出那些落在指定区间内的数字或者时间。range 查询允许以下字符

操作符说明
gt大于
gte大于等于
lt小于
lte小于等于

在这里插入图片描述

  1. 模糊查询

返回包含与搜索字词相似的字词的文档。

fuzzy 查询会在指定的编辑距离内创建一组搜索词的所有可能的变体或扩展。然后查询返回每个扩展的完全匹配。通过 fuzziness 修改编辑距离。一般使用默认值 AUTO,根据术语的长度生成编辑距离。

{
    "query": {
        "fuzzy": {
            "title": {
                "value": "make",
                "fuzziness":2
            }
        }
    }
}

在这里插入图片描述

  1. 多字段排序

sort 可以让我们按照不同的字段进行排序,并且通过 order 指定排序的方式。desc 降序,asc升序。

{
    "query": {
        "match_all": {}
    },
    "sort": [
        {
            "price": {
                "order": "desc"
            }
        },
        {
            "title.keyword": {
                "order": "desc"
            }
        }
    ]
}

在这里插入图片描述

  1. 高亮查询

在进行关键字搜索时,搜索出的内容中的关键字会显示不同的颜色,称之为高亮。

{
    "query": {
        "match": {
            "title": "米34"
        }
    },
    "highlight": {
        "pre_tags": "<font color='green'>",
        "post_tags": "</font>",
        "fields": {
            "title": {}
        }
    }
}

在这里插入图片描述
14) 分页查询

from:当前页的起始索引,默认从 0 开始。 from = (pageNum - 1) * size
size:每页显示多少条

{
    "query": {
        "match_all": {}
    },
    "sort": [
        {
            "price": {
                "order": "asc"
            }
        }
    ],
    "from": 0,
    "size": 3
}

在这里插入图片描述
15) 聚合查询

聚合是对 es 文档进行统计分析,类似与关系型数据库中的 group by,比如取最大值、平均值等等。

  1. 找出最贵的手机价格
{
    "aggs": {
        "max_price": {
            "max": {
                "field": "price"
            }
        }
    },
    "size": 0
}

在这里插入图片描述
2.对所有的手机价格求和

{
    "aggs": {
        "sum_price": {
            "sum": {
                "field": "price"
            }
        }
    },
    "size": 0
}

在这里插入图片描述
3.stats 聚合,对某个字段一次性返回 count,max,min,avg 和 sum 五个指标

在这里插入图片描述
4.桶聚合查询,terms 聚合,分组统计

{
    "aggs": {
        "age_groupby": {
            "terms": {
                "field": "price"
            }
        }
    },
    "size": 0
}

在这里插入图片描述

其他聚合 :

对某个字段取平均值:avg

对某个字段的值进行去重之后再取总数:cardinality

以上是ES的安装和入门操作,重点理解和掌握索引、文档以及高级查询的操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值