Kibana操作Elasticsearch教程

文章目录

  • 简介
    • ES文档操作
      • 创建索引
      • 查看索引
      • 创建映射字段
      • 查看映射关系
      • 字段属性详解
        • type
        • index
        • store
      • 字段映射设置流程
    • 新增数据
      • 新增会随机生成id
      • 新增自定义id
      • 智能判断
    • 修改数据
    • 删除数据
    • 查询
      • 基本查询
      • 查询所有(match_all)
      • 匹配查询
      • 多字段查询
      • 词条匹配
      • 多词条精确匹配
    • 结果过滤
      • 直接指定该字段
      • 指定includes和excludes
      • 高级查询
        • 布尔组合(多条件查询)
        • 范围查询
        • 模糊查询(fuzzy)
      • 排序
        • 单字段排序(sort)
        • 多字段查询
      • 聚合(aggregations)
        • 桶(bucket)类似于数据库中的分组group_by

简介

Kibana是一个基于Node.js的Elasticsearch索引库数据统计工具,可以利用Elasticsearch的聚合功能,生成各种图表,如柱形图、线状图、饼图等。
在开始之前,需要启动Kibana和Elasticsearch
ES的访问地址:http://ip:9200
Kibana的访问地址:http://ip:5601
操作步骤:进入到Kibana后,点击左侧的Dev Tools
在这里插入图片描述

ES文档操作

ES是面向文档的,存储文档的同时对其进行索引使其能够被搜索到。

创建索引

Elasticsearch采用Rest API风格,因此其API就是一次HTTP请求,可以使用任何工具发起http请求创建索引的请求格式。由于遵循REST风格,可以很直观的想到操作名。

  • POST新增
  • GET查询
  • DELETE删除
  • PUT修改
    在这里使用Kibana简化操作
    在这里插入图片描述
    number_of_replicas:设置索引库分片副本数量
    number_of_shards: 设置索引库分片数量

查看索引

  1. 查看某一个特定索引库
   GET 索引库名
  1. 查看所有的索引库
 GET *
  1. 删除索引
DELETE 索引库名
  1. 映射配置
    索引有了,接下来就是添加数据,但是在添加数据之前必须定义映射。 映射就是定义文档的过程,文档包含哪些字段,这些字段是否保存,是否索引,是否分词等。只有配置清楚,Elasticsearch才会帮我们进行索引库的创建。

创建映射字段

请求方式依然是PUT

PUT /索引库名/_mapping/类型名称
{"properties": {"字段名": {"type": "类型","index": true"store": true"analyzer": "分词器"}}
}
  • 类型名称:就是type的概念,类似于数据库中不同表字段名;任意填写,可以指定很多属性。
  • type:类型,可以是text、long、short、date、integer、object等
  • index:是否索引,默认为true
  • store:是否存储,默认为false(会自动生成一个_source备份)
  • analyzer:分词器,这里的ik_max_word即使用ik分词器

发起请求示例

PUT test/_mapping/goods
{"properties":{"title":{"type":"text","analyzer":"ik_max_word"},"images":{"type":"keyword","index":false},"price":{"type":"float"}}
}

字符串类型一共有两种,text代表进行分词,下面要加上分词器,这里使用的ik分词器中ik_max_word代表按照最大程度划分。
keyword不进行分词。

【问题】
在这里插入图片描述

  • elasticsearch创建索引时遇到analyzer[ik_max_word] not found for field[title]

【原因】
IK分词器插件未安装

查看映射关系

GET /索引库名/_mapping

字段属性详解

type

Elasticsearch中支持的数据类型非常丰富:
下面我们介绍几个关键的:
String类型,又分两种:

  • text:可分词,不可参与聚合
  • keyword:不可分词,数据作为完整字段进行匹配,可以参与聚合
    Numberical:数值类型,分两类
  • 基本数据类型:long、integer、short、byte、double、float、half_float
  • 浮点数的高精度类型:scaled_float
    需要指定一个精度因子,比如说10或者100,elasticseach会把真实值乘以这个因子存储,取出时再还原。
    Date:日期类型
    elasticsearch可以对日期格式化为字符串存储,但是建议我们存储为毫秒值,存储为long,节省空间。
index

index影响字段的索引情况

  • true:字段会被索引,则可以用来进行搜索,默认值就是true
  • false: 字段不会索引,不能用来搜索
    ** index的默认值就是true,也就是说不进行任何配置,所有字段都会被索引。**
    但是有些字段是我们不希望被索引的,比如商品的图片信息,就需要手动设置index为false。
store

是否将数据进行额外存储。
在学习lucene和solr时,我们知道如果一个字段的store的值设置为false,那么在文档列表中就不会有这个字段的值,用户的搜索结果中不会显示出来。
但是在elasticsearch中,即使store设置为false,也可以搜索到结果,
原因是Elasticsearch在创建文档索引时,会将文档中的原始数据备份,保存在一个交_source的属性中,而且我们可以通过过滤_source来选择哪些要显示,哪些不显示。
而如果设置store为true,就会在_source以外额外存储一份数据,比较多余,因此一般我们都会将store设置为false,事实上,store的默认值就是false。

字段映射设置流程

在这里插入图片描述

新增数据

新增会随机生成id

POST /索引库/类型名
{“key”:"value"
}

在这里插入图片描述

新增自定义id

如果我们想要自己新增的时候指定id,可以这么做

POST /索引库/类型/id值
{
}

在这里插入图片描述

智能判断

在学习Solr时我们发现,我们在新增数据时,只能使用提前配置好映射属性的字段,否则就会报错。不过在Elasticsearch中并没有这样的规定。
事实上Elasticsearch非常智能,你不需要给索引库设置任何mapping映射,它也可以根据你输入的数据来判断类型,动态添加数据映射。
在这里插入图片描述
相对上个例子来说,我这里新增了color和address两个字段。再看下索引库的映射关系。
在这里插入图片描述
color和address都被成功映射了。

修改数据

把刚才新增的请求方式改为PUT,就是修改数据操作不过修改操作必须要指定id。

  • id对应文档存在,则修改
  • id对应文档不存在,则新增
    在这里插入图片描述
    注意:如果只修改了一个字段,那么原有的其他字段都会消失,只保留当前的这次修改,相当于覆盖

删除数据

DELETE test/goods/2

查询

  • 基本查询
  • _source过滤
  • 结果过滤
  • 高级查询
  • 排序

基本查询

不能设置查询多个条件,如果需要请用后面的高级bool查询

GET /索引库名/_search
{"query"{“查询类型”:{“查询条件”:“查询条件值”}}
}

这里的query代表一个查询对象,里面可以有不同的查询属性

  • 查询类型:match_all,match,term,range等等
  • 查询条件:查询条件会根据类型的不同,写法也有差异,后面根据示例进行详细讲解。

查询所有(match_all)

在这里插入图片描述
hits:搜索结果的文档对象数组,每个元素是一条搜索到的文档信息。

  • _index:索引库
  • _type:文档类型
  • _id:文档id
  • _score:文档得分
  • _source:文档的源数据

匹配查询

在这里插入图片描述

多字段查询

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

GET /test/_search
{"query":{"multi_match": {"query":    "小米","fields":   [ "title", "subTitle" ]}}

在本例中,我们会在title和subtitle字段中查询小米这个词。

词条匹配

term查询被用于精确值匹配
这些精确值可能是数字、时间、布尔或者那些未分词的字符串(keyword)

GET /test/_search
{"query":{"term":{"price":2699.00}}
}

多词条精确匹配

terms查询和term查询一样,但它允许你指定多值进行匹配,如果这个字段包含了指定值中的任何一个值,那么这个文档满足条件。

GET /test/_search
{"query":{"terms":{"price":[2699.00,2899.00,3899.00]}}
}

结果过滤

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

直接指定该字段

GET /heima/_search
{"_source": ["title","price"],"query": {"term": {"price": 2699}}
}

指定includes和excludes

我们也可以通过下面的方法来实现过滤

  • includes:来指定想要显示的字段
  • excludes:来指定不想显示的字段
GET /test/_search{"_source": {"includes":["title","price"]},"query": {"term": {"price": 2699}}}与下面的结果将是一样的:GET /test/_search{"_source": {"excludes": ["images"]},"query": {"term": {"price": 2699}}}

高级查询

布尔组合(多条件查询)
GET test/goods/_search
{"query": {"bool": {"must": [{"match": {"title": "小米电视"}}],"must_not": [{"match": {"title": "电视"}}]}}
}

查询bool里面结果全为true的情况。

范围查询

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

操作符说明
gt大于
gte大于等于
lt小于
lte小于等于
示例:
GET test/goods/_search
{"query": {"range": {"price": {"gte": 3000,"lte": 9909}}}
}
模糊查询(fuzzy)

fuzzy查询是term查询的模糊等价,它允许用户搜索词条与实际词条的拼写出现偏差,但是偏差的距离不得超过2.

GET /test/_search{"query": {"fuzzy": {"title": "appla"}}}

根据上面的示例,能够查询到apple的结果。我们也可以通过fuzziness来指定允许的编辑距离。

GET /test/_search{"query": {"fuzzy": {"title": {"value":"appla","fuzziness":1}}}}

排序

单字段排序(sort)

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

GET /test/_search
{"query": {"match": {"title": "小米手机"}},"sort": [{"price": {"order": "desc"}}]
}

sort是对查询后做的,不属于查询和过滤的条件,因此在query查询对象外面。

多字段查询

假定我们想要结合使用price和_score(得分)进行查询,并且匹配的结果首先按照价格排序,然后按照相关性得分排序。

GET test/goods/_search
{"query": {"bool": {"must": [{"match": {"title": "小米"}}]}},"sort": [{"price": {"order": "desc"}},{"_score": {"order": "desc"}}]
}

聚合(aggregations)

聚合可以让我们及其方便的实现对数据的统计分析
Elasticsearch中的聚合,包含多种类型,最常用的两种,一个叫桶,一个叫度量。

桶(bucket)类似于数据库中的分组group_by

桶的作用,是按照某种方式对数据进行分组,每一组数据在ES中被称为一个桶。Elasticsearch中提供的划分桶的方式有很多:

  • Date Histogram Aggregation:根据日期阶梯分组,例如给定阶梯为周,会自动每周分为一组。
  • Histogram Aggregation:根据数值阶梯分组,与日期类似;
  • Terms Aggregation:根据词条内容分组,词条内容完全匹配的为一组;
  • Range Aggregation:数值和日期的范围分组,指定开始和结束,然后按照阶段分组。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/779409.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

可望而不可即的“人文关怀”

死亡既然是最后的归宿,生命的必然,自然也就没有必要过多地害怕了。一切顺其自然,交给“命运”就是了。 我参观过英国的临终关怀医院,这是世界上最早的一所临终关怀医院,已有100多年历史。 那里的大多数病人都只剩一个…

沃通国密SSL根证书入根赢达信国密浏览器

近日,沃通CA国密SSL根证书正式入根赢达信国密安全浏览器,携手推动国产密码技术应用、完善国密应用生态体系,也标志着沃通国密SSL证书兼容性再次得到提升,进一步夯实国密应用根基。 密码算法的安全性是信息安全保障的核心&#xff…

ethers.js:sign(签名)

Signers 在ethers中Signer是以太坊账户的抽象,可以用来签名消息和交易,如将签名的交易发送到以太坊网络以执行状态更改的操作。 npm install ethers5.4.0// 引入 import { ethers } from ethers签名 this.provider new ethers.providers.Web3Provider(…

数据库系统概论(超详解!!!) 第四节 关系数据库标准语言SQL(Ⅱ)

1.数据查询 SELECT [ ALL | DISTINCT] <目标列表达式>[&#xff0c;<目标列表达式>] … FROM <表名或视图名>[&#xff0c; <表名或视图名> ] … [ WHERE <条件表达式> ] [ GROUP BY <列名1> [ HAVING <条件表达式> ] ] [ ORDER BY…

设计模式——结构型——外观模式Facade

处理器类 public class Cpu {public void start() {System.out.println("处理器启动了...");} } 内存类 public class Memory {public void start() {System.out.println("内存启动了...");} } 硬盘类 public class Disk {public void start() {Syste…

主流公链 - Monero

Monero: 加密货币的隐私标杆 1. 简介 Monero&#xff08;XMR&#xff09;&#xff0c;世界语中货币的意思&#xff0c;是一种去中心化的加密货币&#xff0c;旨在提供隐私和匿名性。与比特币等公开区块链不同&#xff0c;Monero专注于隐私保护&#xff0c;使用户的交易记录和余…

系统分析师-软件开发模型总结

前言 软件工程模型也称软件开发模型。它是指软件开发全部过程、活动和任务的结构框架&#xff0c;通过该模型能清晰、直观地表达软件开发全过程&#xff0c;明确地规定要完成的主要活动和任务&#xff0c;它奠定了软件项目工作的基础 一、瀑布模型&#xff08;Waterfall Model…

罐头鱼AI传单系统说明完整版(一)|网页版视频矩阵获客系统

罐头鱼AI传单系统说明完整版&#xff08;一&#xff09; 一&#xff1a;概述 系统用于通过系统发布视频到抖音&#xff0c;通过AI加抖音关键词提供高播放量&#xff0c;可绑定多抖音号&#xff0c;管理素材&#xff0c;素材直接发布到抖音&#xff0c;Q:290615413定时发布&am…

stable diffusion如何下载预处理器?

如何下载预处理器&#xff1f; 具体位置:SD文件>extensions>sd-webui-controlnet>annotator” 把整个文件夹复制到SD的文件夹里面 里面有一个“downloads”文件夹 把这些模型复制到“downloads”文件夹里

【数据结构】顺序表习题之移除元素和合并两个有效数组

&#x1f451;个人主页&#xff1a;啊Q闻 &#x1f387;收录专栏&#xff1a;《数据结构》 &#x1f389;道阻且长&#xff0c;行则将至 前言 嗨呀&#xff0c;今天的博客是关于顺序表的两道题目&#xff0c;是力扣的移除元素和合并有序数组的题目。 一.移除…

缺省和重载.引用——初识c++

. 个人主页&#xff1a;晓风飞 专栏&#xff1a;数据结构|Linux|C语言 路漫漫其修远兮&#xff0c;吾将上下而求索 文章目录 C输入&输出cout 和cin<<>> 缺省参数全缺省半缺省应用场景声明和定义分离的情况 函数重载1.参数的类型不同2.参数的个数不同3.参数的顺…

【AI】『Suno』哎呦不错呦,AI界的周董,快来创作你的歌曲吧!

前言 &#x1f34a;缘由 Suno AI的旋风终于还是吹到了音乐圈 &#x1f3c0;事情起因&#xff1a; 朋友说他练习时长两天半&#xff0c;用Suno发布了首张AI音乐专辑。震惊之余&#xff0c;第一反应是音乐圈门槛也这么低了&#xff0c;什么妖魔鬼怪都可以进军了嘛&#xff01;…

【详细讲解MNN介绍,安装和编译】

&#x1f308;个人主页:程序员不想敲代码啊&#x1f308; &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家&#x1f3c6; &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提…

【ERP原理与应用】作业·思考题三、四

思考题三 P77第四章3&#xff0c; 6&#xff0c;8 3.生产规划的基本内容是什么&#xff1f; 生产规划是根据企业未来一段时间内预计资源可用量和市场需求量之间的平衡所制定的概括性设想是根据企业所拥有的生产能力和需求预测&#xff0c;对企业未来较长一段时间内的产品、产…

如何将录音制作成二维码?在线生成扫码听音频的二维码

录制的音频文件能做成二维码吗&#xff1f;录制的音频文件用传统的方式来传递&#xff0c;比如微信、QQ、网盘等方式会比较繁琐&#xff0c;而且用户需要接受下载之后才可以播放&#xff0c;不仅占用内存空间&#xff0c;而且不利于音频的快速传播。而生成二维码的方式可以很好…

C语言结合体和枚举的魅力展现

前言 ✨✨欢迎&#x1f44d;&#x1f44d;点赞☕️☕️收藏✍✍评论 个人主页&#xff1a;秋邱’博客 所属栏目&#xff1a;人工智能 &#xff08;感谢您的光临&#xff0c;您的光临蓬荜生辉&#xff09; 引言: 前面我们已经讲了结构体的声明&#xff0c;自引用&#xff0c;内存…

离线Linux/openEuler服务器指定本地yum仓库

1、前提准备一个预装坏境比较完整的linux镜像文件&#xff0c;本文服务器使用的是openEuler 官网&#xff1a;openEuler下载 | 欧拉系统ISO镜像 | openEuler社区官网 2、上传镜像文件至服务器 如果是集群服务器&#xff0c;上传其中一台服务器之后&#xff0c;使用scp指令将镜…

王道C语言督学营OJ课后习题(课时14)

#include <stdio.h> #include <stdlib.h>typedef char BiElemType; typedef struct BiTNode{BiElemType c;//c 就是书籍上的 datastruct BiTNode *lchild;struct BiTNode *rchild; }BiTNode,*BiTree;//tag 结构体是辅助队列使用的 typedef struct tag{BiTree p;//树…

【探索Linux】—— 强大的命令行工具 P.31(守护进程)

阅读导航 引言一、守护进程简介1. 概念2. 特点 二、用C创建守护进程⭕代码✅主要步骤 温馨提示 引言 当谈到计算机系统中运行的特殊进程时&#xff0c;守护进程&#xff08;daemon&#xff09;无疑是一个备受关注的话题。作为在后台默默运行并提供各种服务的进程&#xff0c;守…

C++ —— C++11新增语法

目录 一&#xff0c;列表初始化 1.1 这是什么&#xff1f; 1.2 initializer_list 1.3 在容器的运用 1.4 STL中的变化 二&#xff0c;右值引用和左值引用 2.1 是什么&#xff1f; 2.2 这两个东西有啥关系&#xff1f; 2.3 有啥用&#xff1f; 三&#xff0c;*移动构…