Elastic Stack
文章平均质量分 78
Elastic全栈技术贴
Elastic认证工程师营地
Elastic开源社区
高级系统架构设计师
Elastic 认证工程师
Elastic 认证专家
Elastic 开源社区发起人
阿里云技术社区专家博主
展开
-
【开源社区】Elasticsearch(ES)中空值字段 null_value 及通过exists查找非空文档
字段,而此时源数据和搜索词都会被分词,如果给出了 null_value,ES 就不知道应不应该给这个 null_value 的值分词了,null_value 替换的原本就是索引数据,如果分词可能会影响搜索结果的准确性,使用户得到意想不到的结果,但是如果部分词又违背了 text 类型的设计理念和规则,因此选择了不支持。:在全文检索中,空值本来就会被作为停用词处理,在分词过程中就会被“干掉”,即便我们使用 term 做精准查询,不会被分词,空值也不会被创建索引,因此无法匹配到任何结果,这一点不同于关系数据库。原创 2024-08-09 10:29:04 · 1499 阅读 · 0 评论 -
ES 使用 Bucket Sort 对聚合结果分页
在这个例子中,我们首先使用 “terms” 聚合按照 “product_name” 字段进行分桶,并设置 “size” 为 5,以获取前 5 个产品。然后,在每个桶内部,使用 “bucket_sort” 对桶进行排序,根据 “sales_amount” 字段的值进行降序排序。Bucket Sort 和 Top Hits 有相似之处,他们之间的区别是:Bucket 是对聚合分桶的排序和分页,而 Top Hits 是对分桶聚合中每个桶里相关文档的聚合和排序。原创 2023-06-02 17:33:53 · 2347 阅读 · 1 评论 -
ES中使用 Top Hits 查询分桶聚合结果的每个桶的详细数据
Top hits(顶部命中)是一个聚合功能,用于在查询结果中返回每个桶(bucket)中的顶部 N 个文档。这对于需要在聚合结果中查看每个桶中的最相关或最高评分文档的情况非常有用。简单来说,Top Hits 就是对聚合结果中相关文档的详细展示,它不同于 Post Filter,Post Filter 是基于源数据的查询,和 Agg 没有因果关系,其结果不对 Aggs 产生任何影响。Top Hits 则是基于 Aggs 的结果的查询,其受到 Aggs 结果的影响。原创 2023-06-02 17:28:12 · 2822 阅读 · 2 评论 -
ES 集群的健康值状态
绿色黄色红色新手误区:对不同健康状态下的可用性描述,集群不可用指的是集群状态为红色,无法提供完整读写服务,而不代表无法通过客户端远程连接和调用服务。原创 2023-02-17 10:34:12 · 1519 阅读 · 0 评论 -
ES和 Spring Boot 以及 Spring Framework 兼容性列表
JDK 已经发布了最新的 JDK 19 的版本,Spring Boot 也已经更新到了 Spring Boot 3.0。随之而来的各个版本的兼容性的问题,下面我把各个版本的 Spring Boot、Spring Framework、Spring Data Elasticsearch 以及 Elasticsearch 的版本兼容性放在了下面的表格里原创 2022-12-07 15:54:19 · 1067 阅读 · 0 评论 -
ES中索引别名(alias)的到底有什么用
索引别名的定义:索引别名是用于引用一个或多个现有索引的辅助名称。大多数 Elasticsearch API 接受索引别名来代替索引。官方给的解释一般来说都很难让人理解,尤其是没接触或使用过的人尤其如此。网上很多解释说索引别名是为了保护索引,可以让索引相对于调用者隐藏起来。其实这样的解释只有懂别名是什么的人才能看懂,而懂的人又不屑于看了其实索引别名是对索引绑定的另一个名字,一个别名可以绑定多个索引,一个索引也可以绑定多个别名。...原创 2022-06-20 00:30:58 · 5347 阅读 · 0 评论 -
ES中 Nested 类型的原理和使用
nested属于object类型的一种,是Elasticsearch中用于复杂类型对象数组的索引操作。Elasticsearch没有内部对象的概念,因此,ES在存储复杂类型的时候会把对象的复杂层次结果扁平化为一个键值对列表。原创 2022-08-24 17:05:37 · 10449 阅读 · 0 评论 -
ES实现“小于XX时间”排前面(或后面)“大于XX时间”排后面(或前面)排序
比如有个字段是截止时间,如果过了截止时间,即逾期,否则未逾期。想对是否逾期排序,未逾期拍上面。这就是ES如何对不存在的逻辑字段排序问题。可以用 script 进行排序解决。原创 2022-08-25 19:38:11 · 2420 阅读 · 0 评论 -
Elasticsearch 零基础入坑指南
Elasticsearch新手入门指南,程序员的 Elasticsearch 入坑指南原创 2022-06-07 00:23:34 · 972 阅读 · 0 评论 -
Elasticsearch 可搜索快照
可搜索快照可以让快照以非常经济高效的方式搜索不常访问的只读数据。Cold tier 和 frozen tier 使用可搜索的 快照来降低存储和运营成本。可搜索的快照不需要分片副本,理想情况下,可为数据存储节省一半所需的本地存储空间。可搜索快照依赖于已用于备份的相同快照机制,并且对快照存储库存储成本的影响最小。可搜索快照非常适合管理大量历史数据存档。历史信息的搜索频率通常低于最近的数据,因此可能不需要副本来获得性能优势。对于更复杂或更耗时的搜索,可以结合异步搜索一起使用。3 工作原理如果持有其中一个分片的原创 2022-06-21 14:38:50 · 413 阅读 · 0 评论 -
使用 ES 实现疫情地图或者外卖点餐功能(含代码及数据)
疫情当下,大家几乎每天都在用疫情地图的相关功能,其中的核心功能即地理位置检索,使用 ES 可以非常轻松的实现,下面我简单说一下核心的几个功能如何设计和实现。本文不涉及前段UI的设计和实现以及客户端调用代码,如果大伙儿需要,可以给我留言,需求量比较大的话可以考虑做一个完整项目开源出来,点赞支持下吧PS:学习本文需要对 Elasticsearch 地理位置检索 的基本功能有一定的了解,推荐阅读:todo本文案例中所使用的数据,可在文末下载。下图为疫情地图的基本木块,本文目的为将地理位置检索应用于项目落地,因此和原创 2022-06-30 19:39:09 · 1045 阅读 · 0 评论 -
基于ES 7.x 客户端:Java High Level Rest clients及Transport Client 兼容性、性能对比、使用方法
1、语言无关性Elasticsarch支持的客户端种类:Java REST ClientJava APIPython APIGo API.Net APIPHP APIJavaScripts APIRuby APIPerl APIElandRustCommunity Contributed Clients2、Java API(TransportClient)2.1 生命周期(生卒年:ES 0.9 - ES 7.x)Java API使用的客户端名称叫TransportCli原创 2022-04-17 19:55:46 · 3089 阅读 · 0 评论 -
ES通过 Enrich Processor 的 Ingest Pipeline 实现关系数据库中的表关联(join)操作
文章目录1、引言2、背景3、使用场景4、原理5、Enrich Processor 的执行步骤5.1 检查前置条件5.2 检查源数据5.3 制定 Enrich 策略5.4 创建 Enrich 策略实例创建丰富策略后,使用 执行 enrich policy API 执行它以创建 enrich index。5.5 创建 Enrich Processor 并引用 Enrich Policy5.6 调用 Enrich Processor 执行索引创建5.7 最终生成 target index 如下所示6、案例类比彻底原创 2022-04-24 00:49:37 · 3530 阅读 · 0 评论 -
Kibana 最常见的“启动报错”或“无法连接ES集群服务”的故障原因及解决方案汇总
1、引言新手最常见的 Kibana 服务不可用的问题解答,此类问题如非有经验积累,可能耗费大量时间还不能解决,所以我特此整理了新手常见的 Kibana连不上集群或启动报错的问题及解决方案。可能会有遗漏,如果你遇到的问题不在此列表,请私信提问,我会在此补充。2、问题汇总2.1 Kibana server is not ready yetKibana 服务正在启动中解决方案:Kibana 启动需要一定时间,耐心等待 Kibana服务启动完成,这是最常见的原因。Kibana 和 Elast原创 2022-04-26 14:48:04 · 28325 阅读 · 11 评论 -
ES 8.x 系列教程:ES 8.0 服务安装(可能是最详细的ES 8教程)
这可能是最全面的Elasticsearch 8系列教程原创 2022-04-03 15:47:06 · 21875 阅读 · 12 评论 -
基于ES 7.x 的 SpringBoot+MyBatis-Plus的Java客户端(Java TransportClient & HighLevelClient)的常见操作代码封装(含源代码)
1、基于 TransportClient1.1 创建索引@SneakyThrows private void create(TransportClient client) { List<Product> list = service.list(); for (Product item : list) { System.out.println(item.getDate().toLocalDateTime().format(Date原创 2022-04-24 01:19:43 · 3061 阅读 · 0 评论 -
Elasticsearch 中的“生产模式”和“开发模式”是什么
开发模式是默认配置(未配置集群发现设置),如果用户只是出于学习目的,而引导检查会把很多用户挡在门外,所以ES提供了一个设置项。此项配置为指定节点为单节点发现以绕过引导检查。生产模式,故名思域,即用于生产环境的模式当用户修改了有关集群的相关配置会触发生产模式,在生产模式下,服务启动会触发ES的引导检查或者叫启动检查(bootstrap checks),所谓引导检查就是在服务启动之前对一些重要的配置项进行检查,检查其配置值是否是合理的。引导检查包括对JVM大小、内存锁、虚拟内存、最大线程数、集群发现相关配置等相原创 2022-06-07 00:41:36 · 751 阅读 · 1 评论 -
基于Canal的MySQL=>ES数据同步方案
基于Canal实现MySQL到Elasticsearch的数据同步原创 2021-12-03 18:37:47 · 3945 阅读 · 0 评论 -
不必Reindex,利用runtime_fields优雅地解决字段类型错误问题
前言作为程序员入职一家新公司,当你看到前任程序员写的代码的时候,你是不是经常有这样的感觉:我屮艸芔茻!这代码真他喵的烂!问题对于程序员来说,代码水平良莠不齐比较常见的事情,之所以代码质量不高,一方面原因是自身不太关注于代码的整体管理,另一方面原因是经验不足。实际上在处理公司业务的时候,这种前人挖坑,后人填坑的事情时有发生。对,我们今天暂时不讨论代码规范的问题,而是说一说,再处理搜索业务的时候,如果你已经接手了一些无法描述的代码,咱们怎么补救。首先对于任何问题而言,预防问题发生永远胜于问题发生之后原创 2022-03-28 09:44:36 · 4250 阅读 · 0 评论 -
ES Head插件的两种安装方式,推荐
方式一:本地安装(不推荐)1 安装依赖1.1 安装 nodeJS验证安装成功第一步:Win+R第二步:CMD 输入“node -v”命令检查,如果输出了版本号,则 node 安装成功。2 安装 grunt2.1 执行安装CMD中执行npm install -g grunt-cli命令等待安装完成npm install -g grunt-cli输入:grunt -version命令检查是否安装成功grun原创 2022-04-15 10:27:13 · 1468 阅读 · 0 评论 -
ES基于Snapshot(快照)的数据备份和还原
快照是从正在运行的 Elasticsearch 集群中获取的备份。可以针对整个集群拍摄快照,也可以针对整个集群的数据流和索引。也可以仅对集群中的特定数据流或索引进行快照。备份集群的唯一可靠且受支持的方法是拍摄快照。不可通过复制其节点的数据目录来备份 Elasticsearch 集群。不支持从文件系统级备份中恢复任何数据的方法。如果您尝试从此类备份中恢复集群,它可能会因报告损坏或丢失文件或其他数据不一致而失败,或者它可能似乎已经成功地默默地丢失了一些数据。集群节点的数据目录副本不能用作备份,因为它不是其内容在原创 2022-06-21 14:37:20 · 4525 阅读 · 0 评论 -
ES中 minimum_should_match 的用法和误区
`minimum_should_match`参数指定should返回的文档必须匹配的子句的数量或百分比。如果bool查询包含至少一个should子句,而没有must或 filter子句,则默认值为1。否则,默认值为0原创 2022-10-28 21:04:31 · 4881 阅读 · 1 评论 -
Elasticsearch索引分片的数量及大小分配策略
Shard即数据分片,是ES的数据载体。在ES中数据分为primary shard(主分片)和replica shard(副本分片),每一个primary承载单个索引的一部分数据,分布于各个节点,replica为某个primary的副本,即备份。分片分配的原则是尽量均匀的分配在集群中的各个节点,以最大程度降低部分shard在出现意外时对整个集群乃至服务造成的影响。原创 2022-10-20 21:03:35 · 17871 阅读 · 7 评论 -
ES节点角色深层解读,及高可用集群架构角色设计
角色是ES节点的重要属性,属于Elasticsearch的重要基础概念。在高可用系统架构中,节点角色发挥着至关重要的作用。如果前期没有对业务系统和技术架构做足准备,没有充分考虑后期的扩展问题,势必会为将来的性能优化留下潜在问题。原创 2022-10-17 23:33:45 · 4135 阅读 · 1 评论 -
ES父子级关系Join类型的使用
连接数据类型是一个特殊字段,它在同一索引的文档中创建父/子关系。关系部分在文档中定义了一组可能的关系,每个关系是一个父名和一个子名。父/子关系可以定义如下。合适应用场景是:当索引数据包含一对多的关系,并且其中一个实体的数量远远超过另一个的时候。类型不能像关系数据库中的表链接那样去用,不论是。欢迎点击下方二维码关注作者。...原创 2022-08-26 14:56:15 · 870 阅读 · 0 评论 -
增大max_result_window是错的,ES只能查询前10000条数据的正确解决方案
网上你能搜到的大部分解决方法都是让你把`max_result_window`参数阈值调大。没错,这的确能解决眼前问题,但是会带来严重的后果,最常见的就是后期频繁的 OOM,而且很难发现原因。原创 2022-07-17 18:50:06 · 9544 阅读 · 0 评论 -
Windows、Mac系统 Elasticsearch离线文档(支持选择版本)安装部署教程
鉴于Elasticsearch官方文档访问速度齁慢齁慢。特此给出官方文档离线版速食食谱,各位客官细细品尝。原创 2022-07-09 21:33:50 · 2235 阅读 · 1 评论 -
Elastic Stack 兼容性之 Lostash 与 JDK:Logstash下JDK版本兼容性及版本推荐
文章目录Logstash VSVSVS Java 的版本兼容性版本选择建议Logstash VSVSVS Java 的版本兼容性Oracle/OpenJDK 1.8.0Oracle/OpenJDK 9Oracle/OpenJDK 10Oracle/OpenJDK* 11AdoptOpenJDK 11Oracle/OpenJDK*/AdoptOpenJDK 14Oracle/OpenJDK*/AdoptOpenJDK 15Oracle/OpenJDK*/Temurin 17Azu原创 2022-05-23 17:33:54 · 1355 阅读 · 0 评论 -
Elastic Stack 兼容性之 ES 与 JDK:JDK版本兼容性及版本推荐
文章目录Elasticsearch VSVSVS Java(jdk)版本兼容性版本选择推荐及总结Elasticsearch VSVSVS Java(jdk)版本兼容性版本选择使用建议见文章末尾Oracle/OpenJDK**/AdoptOpenJDK 1.8.0Oracle/OpenJDK** 9Oracle/OpenJDK** 10Oracle/OpenJDK** 11AdoptOpenJDK 11Oracle/OpenJDK** 12Oracle/OpenJDK**/Adop原创 2022-05-23 17:04:13 · 6564 阅读 · 0 评论 -
ES 生产中10个常见参数阈值(默认最大值)操作及优化解决方案
1文档地址:https://www.elastic.co/guide/en/elasticsearch/reference/7.13/search-settings.htmlindices.query.bool.max_clause_count(静态,整数)Lucene BooleanQuery 可以包含的最大子句数。默认为1024.此设置限制 Lucene BooleanQuery 可以拥有的子句数量。默认值 1024 相当高,通常应该足够了。此限制不仅影响 Elasticsearchsbool查原创 2022-05-18 16:34:51 · 8970 阅读 · 0 评论