一、简介 聚合就是对分散的数据进行统计、分析、运算,es提供了一些列的聚合操作API,聚合的字段不能被分词 桶聚合(Bucket Aggregation):对文档进行分组 term聚合:按照文档字段值进行分组 date histogram: 按日期阶梯分组 指标(Metrics Aggregation)聚合:求最大值,最小值,平均值等 avg:求平均值 max:求最大值 min:求最小值 stats:同时求最大值、最小值、平均值等 管道(Pipeline Aggregation)聚合:在聚合结果的基础上再次做聚合操作 二、桶聚合 elasticsearch使用桶聚合对文档进行分组,类似SQL中的group by 2.1 语法 该示例需要删除注释才能运行 GET bank\_search { "size":0, // 文档的数据条数,设置为0表示不显示文档,只显示聚合结果 "aggs":{ // 定义聚合 "ageAggs":{ // 聚合的名称 "terms":{ // 聚合的类型,我们按字段分组所以选择了terms "field":"age",// 用于分组的字段 "size":.... 有更新! elasticsearch基础--聚合操作 Elasticsearch
一、获取基础数据 访问7.4版本测试数据下载地址 获取到数据后,通过kibana批量添加数据 二、搜索 2.1 match 对指定字段进行分词匹配数据 match中,可以通过空格分隔,输入多个词进行匹配,会将符合条件的结果输出 此时如果我们搜索的文本本身就是带着空格的,不希望对他进行分词,则使用match_prase进行匹配 2.2 只查询指定字段 前面使用了match关键字查询数据,发现字段很多,可以通过source关键字,来过滤自己需要的字段 2.3 排序 使用sort关键字可以按照指定字段规则进行排序,如下按照年龄降序 2.3 分页查询 分页查询使用from、size实现,等同于mysql的limit的两个参数 from:数据开始下标 size:查询的数据条数 2.4 bool查询 前面我们使用了match来匹配字段,但是如果我们有多个查询字段,则可以通过bool来组合这些查询条件 2.4.1 must 使用must命令在查询数据时,会查找符合must中定义的所有规则的数据,等同于数据库的and条件 2.4.2 should should命令在查询数据时,查询的数据中,只要有任意.... 有更新! elasticsearch基础--搜索操作 Elasticsearch
一、基础API elasticsearch封装了lucene并封装了restful api用于操作; 192.168.56.5:9200是我的elasticsearch部署得服务器及端口,换成自己的即可。 1.1 获取基础数据 http://192.168.56.5:9200/_cat/health 查询节点健康状况 http://192.168.56.5:9200/_cat/master 查看主节点信息 http://192.168.56.5:9200/_cat/nodes 查询所有节点信息 http://192.168.56.5:9200/_cat/indices 查询所有索引信息 1.2 post和put类型请求插入更新数据 1.2.1 put类型请求 put类型的请求可以向elasticsearch发送并存储数据,需要携带ID 该请求中,索引为customer,类型为external,数据ID为1,数据字段值在请求体中 put带ID保存,第一次会创建数据,后面在发送就会根据id更新数据 发送成功后,返回 在执行一次后返回 可以看到,ID任然保持不变,第二次执行后,_versio.... 有更新! elasticsearch基础--restful风格操作 Elasticsearch
一 、下载 去github中下载自己的elasticsearch对应版本的分词器插件,我的elasticsearch版本为7.4.2,所以我下载的IK分词器插件版本也是7.4.2 Releases · medcl/elasticsearch-analysis-ik (github.com) 二、安装 使用docker创建elasticsearch时,我们关联了一个plugins目录,将解压后的目录移动到该文件夹下 如果是下载包进行的安装,也可以在elasticsearch目录下找到plugins文件夹 然后重启elasticsearch即可 重启后,查看elasticsearch日志提示已经加载了IK分词器 三、测试 IK分词器支持最细粒度分词(ik_max_word)和最粗粒度分词(ik_smart) 最细粒度分词会将输入的文本,根据词典进行最细粒度的拆分,一段文本可能会分出很多词,如下示例 在kibana中使用最细粒度分词对美利坚合众国进行分词 GET _analyze { "analyzer": "ik_max_word", "text": "美利坚合众国" } 得到结果如下 .... 有更新! elasticsearch基础--IK分词器 Elasticsearch
一、docker安装 1.1 拉取镜像 docker pull elasticsearch:7.4.2 docker pull kibana:7.4.2 (elasticsearch得数据操作界面,类似navicat) 1.2 安装elasticsearch 创建配置文件目录和数据存储目录 mkdir -p /opt/mydata/elasticsearch/config mkdir -p /opt/mydata/elasticsearch/data 更改文件夹权限 chmod -R 777 /opt/mydata/elasticsearch/ 配置elasticsearch允许任何IP访问 echo "http.host:0.0.0.0" >> /opt/mydata/elasticsearch/config/elasticsearch.yml 启动docker镜像 9200是elasticsearch对外访问端口,9300是elasticsearch集群通信端口 设置当前环境为单节点 设置最小内存为64M,最大内存为128M docker run --name e.... 有更新! elasticsearch基础--Docker安装 Elasticsearch
一、简介 1.1 简介 Elasticsearch 是一个高性能,基于lucene得全文检索服务,是一个分布式restful风格得搜索和分析引擎,也可以作为NoSQL数据库使用 对lucene做了扩展 原型环境和生产环境可以无缝切换 能够水平扩展 支持结构化和非结构化数据 1.2 应用场景 日志搜索和分析、时空检索、时序检索、智能搜索等场景 检索的数据类型复杂:如果需要查询得数据有结构化数据、半结构化数据、非结构化数据等,elasticsearch可以对以上数据类型进行清洗、分词、建立倒排索引等一系列操作,然后提供全文检索能力 检索条件多样化:全文检索条件可以包括词或短语 边写边读:写入的数据可以实时进行检索 1.3 生态圈 ELK/ELKB提供了一整套解决方案,并且都是开源软件,之间相互配合使用,高效得满足了很多使用场景 二、基本概念 2.1 es基本概念 2.1.1 index 索引 index是es中的一个逻辑命名空间,可以理解为MySQL中的数据库。 2.1.2 type 类型 类型是索引的逻辑类别/分区,同一索引中可以存储不同类型的文档。可以理解为数据库里的表,es7以后的.... 有更新! elasticsearch基础--基本概念 Elasticsearch