2020-09-18 Elasticsearch一些总结

本文介绍了Elasticsearch这一分布式开源搜索引擎的基本概念及其与MySQL的区别。详细解释了Elasticsearch支持的数据类型、索引库操作方法、数据增删改查流程、查询模式及聚合功能。适合希望深入了解Elasticsearch特性和应用场景的技术人员。

Elasticsearch是什么?跟mysql的区别

Elasticsearch 是一个分布式的开源搜索可扩展的分析引擎,适用于所有类型的数据
Mysql

  1. 关系型数据库,顾名思义,适用于结构化数据(数据与数据之间存在强关联)的存储和查询;
  2. 适用于复杂的业务逻辑控制、频繁数据更改这样的场景使用;
  3. 需要保证数据的原子性,可认为保证多个数据同时成功存储(不存在部分存储成功,部分数据存储失败的情况)
  4. 需要使用者清楚的知道自己所需要查找的数据在哪个表格,并且对内部的字段参数有所了解;
  5. 全表全字段检索效率较低,性能消耗大;
    ES(Elastic Search)
  6. 非关系型数据库,全文检索引擎首选,适用于数据与数据之间关联相对独立且数据基本只增加不修改的情况;
  7. 适用于查询所有表格的所有字段,可认为使用者只需要知道查询的关键字,但不需要知道自己需要查询的表格和字段;
  8. 多数据存储时,无法保证数据的原子性;
  9. 数据修改效率低于MYSQL,且不支持联表查询;

Elasticsearch中的类型都是什么?

Elasticsearch中支持的数据类型非常丰富,我们说几个关键的:

  • String类型,又分两种:
  •  	text:可分词,不可参与聚合
     	keyword:不可分词,数据会作为完整字段进行匹配,可以参与聚合	
    
  • Numerical:数值类型,分两类
  •  	基本数据类型:long、interger、short、byte、double、float、half_float
     	浮点数的高精度类型:scaled_float
    
  • Date:日期类型
  •  	 elasticsearch可以对日期格式化为字符串存储,但是建议我们存储为毫秒值,存储为long,节省空间
    

还有布尔类型

Elasticsearch怎么创建索引库,怎么删除索引库,怎么查看索引库

  • 创建索引的请求格式:

     请求方式:PUT
     请求路径:/索引库名
     请求参数:json格式:
    

查看库 GET /索引库名 ,也可以使用*来查询所有索引库配置
删除 DELETE /索引库名

Elasticsearch怎么创建映射,怎么查看映射,怎么删除映射

映射是定义文档的过程,文档包含哪些字段,这些字段是否保存,是否索引,是否分词等
创建映射字段请求方式是PUT,在关键词properties之后的花括号里写上字段名
在字段名的花括号里可以填写
type:类型
Index index影响字段的索引情况。默认值就是true
Store 是否将数据进行额外存储。默认值就是false
Analyzer 分词器

查看映射关系
GET /索引库名/_mapping

没有映射删除

Elasticsearch怎么插入数据,怎么修改数据,怎么删除数据

通过POST请求,可以向一个已经存在的索引库中添加数据
POST /索引库名/类型名 使用"key":"value"形式

把刚才新增的请求方式改为PUT,就是修改了。不过修改必须指定id,
PUT /索引库名/类型名/id值

删除使用DELETE请求,同样,需要根据id进行删除

Elasticsearch中搜索都有哪几种模式,分别介绍一下

  • 基本查询
    • 查询所有(match_all)
    • 匹配查询(match)
    • 多字段查询(multi_match)
    • 词条匹配(term)
    • 多词条精确匹配(terms)

结果过滤

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

高级查询

bool把各种其它查询通过must(与)、must_not(非)、should(或)的方式进行组合

过滤

条件查询中进行过滤

排序

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

Elasticsearch中聚合是什么意思,桶是什么意思,度量是什么意思

聚合可以让我们极其方便的实现对数据的统计、分析

桶,是按照某种方式对数据进行分组,每一组数据在ES中称为一个桶

度量 分组完成以后,我们一般会对组中的数据进行聚合运算,例如求平均值、最大、最小、求和等,这些在ES中称为度量

一个聚合查询的语句

GET /student/_search
{
    "size" : 0,
    "aggs" : { 
        "数学专业的学生都有谁" : { 
            "terms" : { 
              "专业" : "数学"
            }
        }
    }
}

查询数学专业的学生都有谁

size: 查询条数,这里设置为0,因为我们不关心搜索到的数据,只关心聚合结果,提高效率

aggs:声明这是一个聚合查询,是aggregations的缩写

"数学专业的学生都有谁"给这次聚合起一个名字,任意。

terms:划分桶的方式,这里是根据词条划分

专业:划分桶的字段

一个嵌套聚合查询的语句

GET /student/_search
{
    "size" : 0,
    "aggs" : { 
        "数学专业的学生都有谁" : { 
            "terms" : { 
              "专业" : "数学"
            },
                "性别":{
                    "terms":{
                        "性别":"男"
                    }
                }
            }
        }
    }
}

含义 查询学数学专业的男学生都有谁

Elasticsearch中的端口号都有哪些,kinbana是干什么的?

Kibana 是一款适用于 Elasticsearch 的数据可视化和管理工具,可以提供实时的直方图、线形图、饼状图和地图。

两个端口:
9300:作为 Tcp 协议,jar 之间就是通过 tcp 协议通讯。ES 集群之间是通过 9300 进行通讯。
9200:9200 作为 Http 协议,主要用于外部通讯客户端访问接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值