当前位置: 首页 > news >正文

Elasticsearch(二)kibana数据检索

Elasticsearch(二)kibana数据检索

1.简述

有了数据学习使用kibana调用api检索数据,熟练kibana操作后再进一步使用spring data。

  • term用于keyword类型数据精准查询,类似mysql
  • match 用于text类型数据分词查询,倒排索引

首先针对keyword文本类型查询学习,类似于Mysql对字段的查询。

文档内容格式参考

{"_index" : "zb_notice","_type" : "_doc","_id" : "4451224572914342308301065","_score" : 1.0,"_source" : {"_class" : "NoticeEntity","id" : "111","url" : "https://xxxxxx/purchaseNotice/view/111?","owner" : "河管养所","procurementName" : "工程建筑","procurementNameText" : "应急抢险配套工程建筑","intermediaryServiceMatters" : "无(属于非行政管理的中介服务项目采购)","investmentApprovalProject" : "是","code" : "789456","scale" : 3.167183E8,"scaleText" : "投资额(¥316,718,300.00元)","area" : "","requiredServices" : "工程建筑","typeCodes" : ["021"],"context" : "是一座具有灌溉 、供水 、排洪 、交通和挡潮蓄淡等多功能的大(2)型水闸工程,承担黄冈河下游 8.65 万亩农田的灌溉任务并","timeLimit" : "具体时限以合同条款约定为准。","amount" : 0.0,"amountText" : "暂不做评估与测算","amountDescription" : "","selectIntermediaryType" : "直接选取","isChooseIntermediary" : "否","isAvoidance" : "否","endTime" : "2023-09-04 09:30:00","startTime" : "2023-08-31","files" : [{"fileName" : "东溪水闸初设批复(1).pdf","url" : "/aa/bb/file/downloadfile/PjAttachment/123456"}]}
}

2.基础概念

  • 结构化搜索是指对结构化的数据进行搜索。比如日期、时间和数字都是结构化的,它们有精确的格式,我们可以对这些格式进行逻辑操作。比较常见的操作包括比较数字或时间的范围、判定两个值的大小、前缀匹配等。

  • 打分在结构化查询中会影响数据排序,我们得到的结果只有“是”或“否”两个值,可以根据场景需要,决定结构化搜索是否需要打分,但通常我们是不需要打分的。

term-条件查询,Elasticsearch 中的结构化搜索,即面向数值、日期、时间、布尔等类型数据的搜索,这些数据类型格式精确,通常使用基于词项的term精确匹配或者prefix前缀匹配。

1.term查询

  • term查询是完全匹配
  • term查询不会再进行分词,而是直接去分词库进行完全匹配查询;

2.terms 特点

  • 查询某个字段里含有多个关键词的文档
  • 相对于term来,terms是在针对一个字段包含多个值的时候使用
  • 通俗来说就是term查询一次可以匹配一个条件,terms一个可以匹配多个条件;

3.数据类型查询

1.字符串检索

需要注意的是term查询的字段必须带上keyword,不然查询为空!

GET zb_notice/_search
{"query": {"term": {"procurementName.keyword": "城南实验中学校园消防管道修缮工程项目工程监理"}}
}

“procurementName.keyword”中的“keyword”不是关键字,而是Elasticsearch在插入文档的时候,自动为“procurementName”生成的子字段,名字是“keyword”。

2.数字/金额

现在我们想要做的是查找具有某个价格的所有产品,假设我们要获取价格是20元的商品,我们可以使用 term 查询,如下

GET zb_notice/_search
{"query": {"constant_score": {"filter": {"term": {"amount": 107000.4}}}}
}

通常查找一个精确值的时候,我们不希望对查询进行评分计算。只希望对文档进行包括或排除的计算,所以我们会使用 constant_score 查询以非评分模式来执行 term 查询并以1.0作为统一评分。

最终组合的结果是一个 constant_score 查询,它包含一个 term 查询:

GET products/_search
{"query": {"constant_score": {"filter": {"term": {"price": 20}}}}
}

对于数字,一般还有范围查询

GET zb_notice/_search
{"query": {"constant_score": {"filter": {"range": {"amount": {"gte": 100000,"lte": 220000}}}}}
}

range 支持的选项

gt:大于(greater than)gte:大于等于(greater than or equal)lt::小于(less than)lte:小于等于(less than or equal)eq:等于(equal)neq:不等于

4.时间类型

比较通用的是时间范围查询

  • 范围时间查询
POST zb_notice/_search
{"query": {"constant_score": {"filter": {"range": {"startTime": {"gte": "2023-08-25","lte": "2023-08-30"}}}}}
}
  • 时间查询
POST zb_notice/_search
{"query": {"constant_score": {"filter": {"range": {"startTime": {"gte": "2023-08-25"}}}}}
}

5.列表类型

当数据结构是一个列表

//多值查询
GET zb_notice/_search
{"query": {"terms": {"typeCodes": ["021", "022", "023"]}}
}

6.页数量设置

当测试查询数据时,发现数据可能有100条,但是ES默认返回只有10条,可以设置size查看更多数据

 GET zb_notice/_search
{"query": {"terms": {"typeCodes": ["021", "022", "005"]}},"size": 10000
}

7.其他方面-最大返回数限制

es默认查询1W条数据,也就是说超过

Elasticsearch官方默认限制索引查询最多只能查询10000条数据,查询第10001条数据开始就会报错:

Result window is too large, from + size must be less than or equal to

原因分析:

es对from + size的大小进行限制,必须小于等于10000。

解决方案:
在业务中限制分页大小,使from+size<=10000;
动态更改索引设置,为max_result_window参数赋值足够大的值;
es默认最大返回数是10000,支持的最大返回数是2^31-1,也就是2147483647,不建议设置太大,query数据时size不要太大,总得考虑内存消耗的,设置了返回max后可以用分页获取, from:num_a, size:num_b,获取的就是num_a+1到num_a+num_b的数据

但是很多时候10000数据不能满足项目的需求,所以我们就要解除这个限制。

解决方案:
第一种办法:

在restful请求时,解除索引最大查询数的限制

put _all/_settings{"index.max_result_window":200000}

_all表示所有索引,如果针对单个索引的话修改成索引名称即可!!!

8.仅返回需要的字段

当文档对象太多,影响数据查看效果,可以使用_source,保障只返回我们想要的数据

 "_source": ["showed_field1","showed_field12"],---------------------------------------GET zb_notice/_search{"_source": ["amount","scale"],"query":{"match_all": {}},"size": 10000}

相关文章:

Elasticsearch(二)kibana数据检索

Elasticsearch(二)kibana数据检索 1.简述 有了数据学习使用kibana调用api检索数据&#xff0c;熟练kibana操作后再进一步使用spring data。 term用于keyword类型数据精准查询&#xff0c;类似mysqlmatch 用于text类型数据分词查询&#xff0c;倒排索引 首先针对keyword文本…...

JavaScript编程语法作业

目录 目录 前言 思维导图 1&#xff0c;作业资源 2&#xff0c;if语句练习 2.1代码解读: 2.2,结果展示: 3&#xff0c;switch语句练习 3.1,代码解读: 3.2,结果展示: 4.while循环练习 4.1,代码解读: 4.2.结果展示: 5.do-while循环练习 5.1,代码解读: 5.2,结果展…...

服务器中了Malloxx勒索病毒应该怎么办?勒索病毒解密,数据恢复

Malloxx勒索病毒是一种近年来发现的电脑病毒&#xff0c;它以加密用户电脑中的重要文件数据为手段&#xff0c;威胁用户并以此勒索钱财。这种病毒的传播方式多种多样&#xff0c;可以通过电子邮件、恶意网站、网络下载等方式进行传播。一旦电脑被感染&#xff0c;病毒会立即锁住…...

如何实现Spring的事务管理功能:@Transactional声明式事务

在Spring MVC中处理SQL事务&#xff0c;可以使用Spring的事务管理功能来实现。Spring提供了多种配置和编程方式来管理事务&#xff0c;以下是一种常见的基于注解的方法来处理SQL事务&#xff1a; 1. 配置数据源和事务管理器&#xff1a;首先&#xff0c;您需要配置数据源和事务…...

LeetCode(力扣)122. 买卖股票的最佳时机 II

LeetCode122. 买卖股票的最佳时机 II 题目链接代码 题目链接 https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/ 代码 class Solution:def maxProfit(self, prices: List[int]) -> int:result 0for i in range(1, len(prices)):result max((prices[i…...

串行通信协议

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、UART二、SPI二、IIC 前言 UART为异步串行通信&#xff0c;使用各自的时钟控制数据的发送和接受过程&#xff0c;不使用同步时钟&#xff0c;而是使用一些特…...

Elasticsearch中RestClient使用

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…...

【LeetCode-中等题】208. 实现 Trie (前缀树)

文章目录 题目方法一&#xff1a;利用数组构建26叉树方法二&#xff1a;利用哈希表构建26叉树 题目 方法一&#xff1a;利用数组构建26叉树 插入图示&#xff1a; 全搜索和前缀搜索&#xff1a; 注意&#xff1a;全局匹配匹配完直接返回插入时的标志位 而前缀匹配时&#xff…...

python队列与多线程——生产者消费者模型

队列相关知识点 多线程相关知识点 import random import time from queue import Queue import threadingclass Consumer(threading.Thread):def __init__(self, name, Q: Queue):super(Consumer, self).__init__()self.name nameself.Q Qdef run(self):while True:time.sl…...

idea的安装

大家可以关注博主&#xff0c;加个微信&#xff0c;私下聊聊 我们先到idea的官网里下载一个ideaidea官网 idea的安装非常简单&#xff0c;只需要一直next就行&#xff0c; 安装完后到你的文件里找到idea64.exe.vmoptions文件&#xff0c;在最后一行添加-javaagent:D:\idea\jetb…...

Unity下如何实现RTMP或RTSP播放端录像?

好多开发者问我们&#xff0c;Unity环境下&#xff0c;除了RTSP或RTMP的播放&#xff0c;如果有录像诉求&#xff0c;怎么实现&#xff1f;实际上录像相对播放来说&#xff0c;更简单一些&#xff0c;因为不涉及到绘制&#xff0c;只要拉流下来数据&#xff0c;直接写mp4文件就…...

【Python】Python基础语法

总感慨万千&#xff0c;虽只道寻常 文章目录 前言1. python与Java的主要区别2. 数据类型3. 输入与输出3.1 输入3.2 输出 4. 注释5. 运算符6. 条件语句7. 循环8. 函数9. 列表9.1 创建9.2 根据下标访问元素9.3 列表切片9.4 遍历9.5 插入元素9.6 查找元素下标9.7 删除元素9.8 列表…...

I2C总线驱动:裸机版、应用层的使用、二级外设驱动三种方法

一、I2C总线背景知识 SOC芯片平台的外设分为&#xff1a; 一级外设&#xff1a;外设控制器集成在SOC芯片内部二级外设&#xff1a;外设控制器由另一块芯片负责&#xff0c;通过一些通讯总线与SOC芯片相连 Inter-Integrated Circuit&#xff1a; 字面意思是用于“集成电路之间…...

Unix Network Programming Episode 77

‘gethostbyaddr’ Function The function gethostbyaddr takes a binary IPv4 address and tries to find the hostname corresponding to that address. This is the reverse of gethostbyname. #include <netdb.h> struct hostent *gethostbyaddr (const char *addr…...

解决Ubuntu无法安装pycairo和PyGObject

环境&#xff1a;虚拟机Ubuntu20.04&#xff0c;vscode无法安装pycairo和PyGObject 虚拟机Ubuntu20.04&#xff0c;vscode中运行Anaconda搭建的vens 的Python3.8.10 首先在vscode中点击ctrlshiftp&#xff0c;选择Python3.8.10的环境&#xff0c;自动激活Python 最近在搞无人…...

Android Handler 机制解析

1、前言 在 Android 开发中&#xff0c;Handler 的机制和运行原理这方面的知识可以说是每个人都需要熟悉的。这不仅是因为 Handler 是 Android 应用的基石之一&#xff0c;也因为 Handler 整体设计上也是十分优秀的。接下来我就梳理总结一下常见的 Handler 相关知识点。 2、基…...

酒店固定资产管理怎么分类

在酒店业中&#xff0c;固定资产的管理是至关重要的一环。它不仅影响到企业的运营效率和盈利能力&#xff0c;而且直接影响到客户体验和品牌形象。因此&#xff0c;对于酒店管理者来说&#xff0c;合理、有效地进行固定资产管理是一项必不可少的任务。本文将探讨酒店固定资产的…...

OpenCV(三十一):形态学操作

​​​​​​1.形态学操作 OpenCV 提供了丰富的函数来进行形态学操作&#xff0c;包括腐蚀、膨胀、开运算、闭运算等。下面介绍一些常用的 OpenCV 形态学操作函数&#xff1a; 腐蚀操作&#xff08;Erosion&#xff09;&#xff1a; erode(src, dst, kernel, anchor, iteration…...

Python之面向对象(二)

目录 属性和方法静态属性/方法、普通属性/方法、类方法保护和私有属性/方法魔术方法构造方法(\_\_new__/\_\_init\_\_)析构方法(\_\_del__)调用方法&#xff08;\_\_call__&#xff09;toString方法\_\_str__、\_\_repr\_\_\_\_getitem__、setitem、delitem\_\_add__、\_\_gt\_…...

ESP32用作经典蓝牙串口透传模块与手机进行串口通信

ESP32用作经典蓝牙串口透传模块与手机进行串口通信 简介ESP32开发板Arduino程序手机与ESP32开发板进行蓝牙串口透传通信总结 简介 ESP32-WROOM-32模组集成了双模蓝牙包括传统蓝牙&#xff08;BR/EDR&#xff09;、低功耗蓝牙&#xff08;BLE&#xff09;和 Wi-Fi&#xff0c;具…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...