
elasticsearch
文章平均质量分 67
DavidSoCool
路漫漫其修远兮,吾将上下而求索
展开
-
使用Ollama通过预训练模型获取句子向量(rest api方式)
到这就可以通过接口调用把句子转为向量,然后就可以在elasticsearch中使用了~接口里有2个入参,model表示模型,prompt作为句子入参。2、搜索预训练模型(all-minilm),选择合适的操作系统。3、复制下载指令并下载。1、下载Ollama。原创 2025-04-09 19:19:00 · 167 阅读 · 0 评论 -
Windows Anaconda使用Sentence-BERT获取句子向量
Anaconda是一个流行的Python数据科学平台,它包含了许多科学计算和数据分析的库,包括和。虽然不是必需的,但使用Anaconda可以简化环境管理和依赖安装的过程。可以从下载并安装Anaconda。为了避免不同项目之间的依赖冲突,建议为每个项目创建一个独立的虚拟环境。在虚拟环境中,通过pip安装和默认情况下,pip会从 pypi 的官方服务器下载包,这可能会因为网络问题导致速度较慢。可以切换到国内的镜像源来加速下载。原创 2025-04-08 20:32:37 · 922 阅读 · 1 评论 -
es中分页边界数据重复问题处理方式
上述方案都可以解决翻页数据重复的问题,由于是c端查询,随着用户数量凉的增加,使用快照方式会导致服务器内存紧张,遂放弃2和3,如果在业务能够容忍新数据暂时查询不出来,可以使用1方案来解决。使用es提供的Scroll,基于初始搜索时刻的固定快照,内存较高,需维护完整的搜索上下文,需要手动管理(clear-scroll)以避免内存泄漏,适用于数据导出、批量处理。使用es提供的Point in time,提供基于创建时刻的数据快照,自动过期释放资源,,会占用内存,占用内存较低,适用于实时搜索、分页浏览。原创 2025-04-02 20:29:31 · 402 阅读 · 0 评论 -
es自定义ik分词器中文词库实现热更新
2.6、在es的config下面创建analysis-ik目录,{es-path}\config\analysis-ik。2.8、编辑 IKAnalyzer.cfg.xml,将web服务中的数据接口地址填进去。2.4、在es插件目录下新建ik目录,{es-path}\plugins\ik。2.7、将ik目录下config里面的文件拷贝到analysis-ik目录中。经过测试ik读取web地址的频率是每分钟一次,暂时没找到强制刷新的方法。索引字段与属性都属于静态设置,若后期变更历史数据需要重建索引才可生效。原创 2025-04-02 17:41:17 · 651 阅读 · 0 评论 -
es 第28节-深入掌握集群组建与集群设置
到这里就完成了3个节点的es集群配置,由于es的弹性扩展,当我们的集群资源不足时,可以动态的添加节点,es会自动帮助我们平衡节点上的数据,利用这个自动平衡节点数据的特性,我们可以很方便的做机房迁移,只要在新机房把节点部署起来并连接上集群,待数据都分配到新节点上后,可以依次关闭老机房的节点,但是自动平衡数据也有缺点,如果单个节点上的数据过大,集群间的网络带宽可能会被打满。# 1:有很多参数调节的设置,无需在集群启动之前设置,可以在集群启动之后,依据实际需求动态调整,即刻生效。大规模无需超过100。原创 2025-04-01 22:23:38 · 1001 阅读 · 0 评论 -
es 第27节-运用Script脚本实现复杂需求
### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性,任何企图直接替代严格事务性场景的应用项目都会失败!#### 1.Elasticsearch是数据库,不是普通的Java应用程序,传统数据库需要的硬件资源同样需要,提升性能最有效的就是升级硬件。# ES的脚本类同传统数据库的UDF,可以自定义一些规则表达式,目的是满足日益复杂的应用需求。# Lucene,继承原生lucene内置能力,性能好,简洁直接,性能同比其它,最好。原创 2025-03-27 22:18:18 · 1013 阅读 · 0 评论 -
ES 使用geo point 查询离目标地址最近的数据
将带有经纬度坐标的省市区数据存入es中,mappings字段使用geo point类型,索引及查询dsl如下。使用mysql计算可优化的地方在于,新版本mysql提供了空间几何字段类型POINT,优化后新表结构如下。将带有经纬度坐标的省市区数据存入mysql中,使用mysql直接计算,表结构及查询sql如下。需求描述:项目中需要通过经纬度坐标查询目标地所在的行政区。解决思路有两种,使用mysql和es分别查询。计算每个点与目标点之间的距离(单位为米)。1、使用mysql进行查询。2、使用es进行查询。原创 2025-03-13 15:15:38 · 431 阅读 · 0 评论 -
es 第26节-文本分词深入探查
### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性,任何企图直接替代严格事务性场景的应用项目都会失败!# Token filter:基于前面文本分词之后的词项,做一些过滤信息,处理一些词项,达到归一化处理,语法关键字: filter。# 倒排索引是ES存储的基础,文本信息分词之后基于排索引构建索引库,即使没有分词,也是一个独立此项,也会基于倒排存储;# Whitespance,按照空格拆分词,不转换其中任何的字符,中文分词时,也是按照空格分词。原创 2025-01-24 11:11:31 · 1142 阅读 · 0 评论 -
es 第25节-运用Rollup减少数据存储
支持计算聚合函数:avg、max、min、sum、bucket_script 管道聚合、cardinality、filter、geo_bounds、geo_centroid、median_absolute_deviation、missing、percentiles、rare_terms、scripted_metric、terms、value_count、weighted_avg。# 1.与Rollup类似,将数据转换变化,基于聚合的思维,区别在于,可以不受时间限制,主要是在已有的聚合上做一次预聚合;原创 2025-01-21 23:15:12 · 1018 阅读 · 0 评论 -
es 第24节-运用SQL简化DSL查询
###2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性,任何企图直接替代严格事务性场景的应用项目都会失败!第1个,统计第95百分位的飞行时间平均时间;####1.Elasticsearch是数据库,不是普通的Java应用程序,传统数据库需要的硬件资源同样需要,提升性能最有效的就是升级硬件。#ES提供的SOL查询近可能的靠近SOL的表达能力,但与标准的SOL还是有点差距。#分页查询,注意返回结果中的cursor,cursor相当于游标,用于翻页。原创 2025-01-18 23:06:25 · 779 阅读 · 0 评论 -
es 第23节-运用Pipeline实现二转聚合统计
### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性,任何企图直接替代严格事务性场景的应用项目都会失败!2.基于前置的分桶聚合,之后进行管道聚合。# 每个数据聚合阶段是一个环节,多个环节串联一起来,形成一个管道模型,上一个环节的聚合结果是下一个环节的输入数据。# 有些应用场景,分桶聚合之后的数据需要进行一些过滤,基于管道聚合很容易实现,有点类似与数据库中的。# 基于一定的窗口,计算前后分桶数据差值,如:redis监控中,总命令数差值,默认是递增的。原创 2025-01-10 22:49:38 · 882 阅读 · 0 评论 -
es 第22节-Bucket特殊分桶聚合实战
hard_bounds,用于限制分桶的范围,可以缩小分桶数,与extended bounds 内部执行逻辑不一样,善于应用在分桶数非常多的场景,可以大大减小非必要的分桶,减少资源消耗;# extended_bounds,扩展多余分桶数,配合查询条件限制,分桶的范围包括在 min~max之间,用于补足没有数据的间隔分桶。#### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性,任何企图直接替代严格事务性场景的应用项目都会失败!基于日期的直方图分桶;原创 2025-01-07 22:23:15 · 649 阅读 · 0 评论 -
es 第21节-Bucket常用分桶聚合实战
shard_min_doc_count,限制分片最小满足的文档数量,或者词项数量,此值默认是0,必须小于 min_doc_count,建议值:(shard_min_doc_count=min_doc_count/分片数)# depth_first,深度优先,擅长分桶数据小的,分桶比较固定的,建议 10000 以内,即 topX 类型,默认。与mysqltemp表完全不是一种逻辑;# size,返回分桶数量,默认 10,限制不能超过 65535,如果超过,需要设置超过参数,见后面设置。原创 2025-01-03 23:15:48 · 1193 阅读 · 0 评论 -
es 第20节-运用指标聚合快速统计数值
注意 taxful_total_price字段是float类型,数据本身只有2为小数,统计后会产生多小数,这是因为es底层是java写的,java自带的问题。#### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性,任何企图直接替代严格事务性场景的应用项目都会失败!超过这个值,计数可能会变得有点模糊。# carintility:背后的算法Hyperloglog,该算法是非精确型的,默认3000个,ES最高支持40000个,超过了就是非精确型的。原创 2025-01-01 22:43:00 · 992 阅读 · 0 评论 -
es 第19节-运用异步机制执行重度查询
batched_reduce size,控制分片查询响应数,默认5,无需要等待所有分片执行查询完成,即可执行查询结果合并;#### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性,任何企图直接替代严格事务性场景的应用项目都会失败!# wait_for_completion_timeout,等待超时时间,默认 1s,如果是 1s内返回结果,则直接返回结果;相反,则会返回异步任务元数据信息。# 写一个聚合查询,这里数据量太少,很快就执行完了,就当它比较慢吧。原创 2024-12-30 22:41:52 · 1063 阅读 · 0 评论 -
es 第18节-分页查询使用避坑的一些事
快照查询基于缓存机制,将查询的所有数据ID缓存起来,下次查询,从缓存中直接找寻,避免重复执行查询,是目前业界做深度查询最佳的方式;# Search after,基于排序字段,查询下一页,基于上一页最后一条数据的排序字段值,作为参照,可以保证数据查询量大大减少。# Search after,基于排序字段,查询下一页,基于上一页最后一条数据的排序字段值,作为参照可以保证数据查询量大大减少。# 深度翻页真的需要这么多吗?# ES是分布式的,相比传统数据库多了分片机制,查询一次,要查询多个分片;原创 2024-12-24 22:18:57 · 1203 阅读 · 0 评论 -
es 第17节-查询结果排序深入解读
### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性,任何企图直接替代严格事务性场景的应用项目都会失败!# ES默认数据写入,非Text类型都会存储为列式,应用领域数据排序与数据聚合设置索引字段属性,docvalues:true/false,是否启用。# sort.mode,设定写入排序字段取值,max/min,支持多个字段,默认max。# sort.order,设定写入排序字段,排序顺序,支持多个字段,默认asc。原创 2024-12-20 23:03:41 · 299 阅读 · 0 评论 -
es 第16节-运用启发式特性引导用户查询
string_distance,关键字,词项字符计算距离的方式,支持多种高级的数学算法,建议专业性去看此方面论文,默认internal,其他值 damerau_levenshtein, levenshtein, jaro_winkler, ngram。# max_errors,关键字,最大错误短语数量,默认 1,控制匹配到的返回短语错误数据量,调整值,会增加返回的数据。# confidence,关键字,置信度,控制返回结果的数据量,取值 0~1,默认1,有命中的就返回,无命中的不返回。原创 2024-12-16 22:40:00 · 1079 阅读 · 0 评论 -
es 第15节-词项查询与跨度查询实战运用
inner_hits:可选参数,用于配置返回的固定文档的详细信息。# span,跨度查询,基于分词词项的精确位置,控制问隔,设定相似度来执行,相比match 匹配类查询,提供了更加底层灵活的查询机制,同时也是非常复杂。# prefix_length,关键字,控制容错词的起始位置,从左开始,设置的值应该小于 value 的字符长度,建议设置的更加精确,性能更好。# 有很多应用场景,我们对于输入的内容并无严格的校验,导致入库的内容有错别字,此时需要一定的纠错查询,ES 针对此需求,设计了糊纠错查询。原创 2024-12-12 23:25:38 · 1064 阅读 · 0 评论 -
es 第14节-全文文本分词查询
### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性,任何企图直接替代严格事务性场景的应用项目都会失败!# cross_fields,多字段查询时,部分分词在第一个字段里,其它的分词在另外的字段里phrase,短语匹配,等同match_phase。# 多个查询检索条件有先后,先基于第⼀个条件查询,之后在结果集上执⾏后⾯的查询条件,类似于 if,then 逻辑。# ordered,关键字,查询的内容是否必须符合顺序,取值true/false,默认false。原创 2024-12-08 22:31:29 · 773 阅读 · 0 评论 -
es 第13节-多条件组合查询实战运用
# 多字段组合查询,数据排序依赖很多字段共同的分值,有些不必要的字段,可以设定一个固定值,仅仅用来作为过滤条件,防止过度干预排序分值计算,从而影响排序。## bool逻辑条件是组合查询,最常用的,也是必须掌握的,DSL查询与SQL不一,传统查询里面的多条件组合通过观关键字组合,这里采用的是以下关键字。## ES 查询默认排序,采取的是依据关键字的关联度计算分值,默认算法是 BM25,多个字段查询时,可以跟不同的字段设定不同的权重,来调整排序。原创 2024-12-05 22:16:56 · 1084 阅读 · 0 评论 -
es 第12节-选择合适的数据查询方式
分片查询路由 https://www.elastic.co/guide/en/elasticsearch/reference/8.6/search-shard-routing.html。# preference,分片查询优先度,主分片与副本分片,包括本节点与其它节点,默认基于ES统计数据,此参数用于控制查询时,分片的路由选择,具体的可以参考最后参考文献连接。# ECS 参考规范 https://www.elastic.co/guide/en/ecs/1.8/index.html。原创 2024-11-28 23:06:16 · 915 阅读 · 0 评论 -
es 第11节-使用Ingest加工索引数据
### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性,任何企图直接替代严格事务性场景的应用项目都会失败!#### 1.Elasticsearch是数据库,不是普通的Java应用程序,传统数据库需要的硬件资源同样需要,提升性能最有效的就是升级硬件。##### 索引字段与属性都属于静态设置,若后期变更历史数据需要重建索引才可生效。## 更新数据使用 pipeline。##### 对历史数据无效!##### 一定要重建索引!## 索引设置 pipeline。原创 2024-07-03 14:20:07 · 209 阅读 · 0 评论 -
es 第10节 如何正确使用Reindex重建索引
### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性,任何企图直接替代严格事务性场景的应用项目都会失败!#### 1.Elasticsearch是数据库,不是普通的Java应用程序,传统数据库需要的硬件资源同样需要,提升性能最有效的就是升级硬件。##### 索引字段与属性都属于静态设置,若后期变更历史数据需要重建索引才可生效。# 1、重建是创建新索引,原有的保留。##### 对历史数据无效!##### 一定要重建索引!## 限制重建数据的范围、数量。原创 2024-07-02 16:59:48 · 226 阅读 · 0 评论 -
es 使用pipeline将json内容的字段转换到nested字段
现有数据字段 json字符串转nested字段。原创 2024-07-01 15:42:06 · 136 阅读 · 0 评论 -
es 第9节-高效的更新数据实战
### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性,任何企图直接替代严格事务性场景的应用项目都会失败!# 1、查询数据 2、标记删除 3、插入数据 4、es更新任何一个字段数据都是全部删除。# 1、覆盖是更新,有客户端完成所有数据的组装,服务端认可数据的完整性,执行覆盖。# 1、局部更新本质上也是覆盖式更新,只是由服务端完成数据的合并。# 2、数据更新一次,内部会先删除,在插入。# 1、数据每次变更一次,版本都会增加1。原创 2024-06-20 20:34:18 · 462 阅读 · 0 评论 -
es 第8节-写入数据与删除数据如何避坑
### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性,任何企图直接替代严格事务性场景的应用项目都会失败!### bulk,批量写入,如存在新字段则会刷新mapping,尽量不要刷新mapping。# es使用的是标记删除,不会真正和意义上马上物理删除,待下次写入到次哦按时才会真正删除。# _create ,新增数据关键字,仅仅用于新增,覆盖的数据将会出错。## 数据删除理由机制,路由错误则删不到。##### 对历史数据无效!##### 一定要重建索引!原创 2024-06-19 17:56:25 · 365 阅读 · 0 评论 -
es 第7节-使用别名与模板助力索引设计
### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性,任何企图直接替代严格事务性场景的应用项目都会失败!#### 1.Elasticsearch是数据库,不是普通的Java应用程序,传统数据库需要的硬件资源同样需要,提升性能最有效的就是升级硬件。# 模板就是一种规则,设定好之后,无论之后任何时候创建索引都是依据模板执行,是一种自动化机制。### alias 索引别名,不直接对外提供索引的实际名字,使用别名可以做到对外无感切换。##### 一定要重建索引!原创 2024-06-13 16:43:04 · 228 阅读 · 0 评论 -
es 第6节-运用字段动态映射灵活扩展
_ignored 忽略的字段元数据,当输入字段类型不匹配报错,默认false不允许插入,但是可以设置字段忽略属性,绕开检查,繁殖,可以查询到忽略过的字段。# _id 一条文档数据必须有一条id,一个索引中必须是唯一,默认自动生成,使用objectId规则,可以自己指定,不限制类型,长度限制512字符。# _route 路由元数据,es是分片结构设计,文档写入需要指定分片位置,路由字段默认数据id,基于hash计算。##### 对历史数据无效!##### 一定要重建索引!原创 2024-06-07 17:58:47 · 262 阅读 · 0 评论 -
es 第5节 个性化设置数据字段属性
# eager global ordinals,keyword数据类型做term聚合排序时,需要加快检索效率,可以提前将数据生成全局序号,而不必等需要聚合时生成。# null_value 空值默认,允许不设置字段,与数据库不同,_source不会存储,仅仅用来做索引检索。# store, es数据默认存储在_source,其实也可以在Lucene里面存一份,默认false。# 列式数据存储,es存储原始数据一份,列式存储一份,默认有2份数据。原创 2024-06-07 14:42:25 · 269 阅读 · 0 评论 -
es 第4节 特殊数据字段类型应用实战
【代码】es 3期 第4节 特殊数据字段类型应用实战。原创 2024-06-03 19:57:21 · 61 阅读 · 0 评论 -
谷歌浏览器使用elasticsearch-head插件
http.cors.enabled 是否支持跨域,默认为false http.cors.allow-origin 当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使用正则表达式。比如只允许本地地址。 /https?:\/\/localhost(:[0-9]+)?/ http.cors.max-age 浏览器发送一个“预检”OPTIONS请求,...原创 2023-02-24 15:29:55 · 1574 阅读 · 0 评论 -
es 第3节 常规数据字段类型应用实战
【代码】es 3期 第3节-常规数据字段类型应用实战。原创 2023-03-09 19:30:03 · 38 阅读 · 0 评论 -
es 第2节 索引创建规范约束以及索引数据模型
【代码】es 三期 第二节 索引创建规范约束以及索引数据模型。原创 2023-03-08 14:42:06 · 29 阅读 · 0 评论 -
idea debug elasticsearch8.6.2 源码
该版本默认开启了权限,访问localhost:9200需要输入账号密码。打开idea es代码,配置debug参数,ok后运行。2、idea打开项目工程,设置gradle和jdk。1、下载源码 8.6.2 zip包 并解压。然后cmd bug模式启动源码。4、确定后等待初次构建完成。已经成功进idea断点中。5、cmd进入源码目录。在 idea打上断点。原创 2023-02-27 10:49:57 · 935 阅读 · 0 评论 -
elasticsearch 第三节 特殊字段类型
join类型,父子节点必须在同一个分片#### join类型,父子节点必须在同一个分片DELETE menus_001#举例菜单PUT menus_001{ "settings": { "number_of_replicas": 1, "number_of_shards": 3 }, "mappings": { "properties": { "menuId":{ "type": "integer" }, .原创 2020-08-30 21:44:50 · 297 阅读 · 0 评论 -
elasticsearch 第三节 mappings和常用字段类型
mappings#创建索引字段映射,_source默认为truePUT shop_001{ "mappings": { "properties": { "shopName":{ "type": "text" }, "createTime":{ "type": "date" }, "city":{ "type": "text" } } }}#查看索.原创 2020-08-30 21:32:39 · 385 阅读 · 0 评论 -
elasticsearch 第二节 索引数据类型设计
要求字段个数不超1024GET _search{ "query": { "match_all": {} }}#存放一条数据,索引默认创建PUT /product_001/_doc/1{ "goodName":"apple", "createTime":"2020-08-23", "sku":[ "1", "2", "3" ]}#创建分片数和副本数PUT /product_002{ "settings": { "n原创 2020-08-23 19:35:22 · 239 阅读 · 0 评论 -
elasticsearch 第一节 环境搭建
虚拟机:centerOS7+elasticsearch 7.+kibana 7.+目标:搭建es集群保持es和kibana版本一致本次版本为 7.8.1下载地址:https://www.elastic.co/cn/downloads/es 6.+ 起不能用root账户启动,需要单独创建一个账户。新版es自带jdk,不过最好自行安装es包中对应的jdk版本,并配置环境变量,方便实用一些java命令。下载好后拷贝三台虚拟机,解压编辑配置文件本次三台机器地址:192.16.原创 2020-08-23 19:25:37 · 272 阅读 · 0 评论 -
CentOS 7 部署 elasticsearch 7.6.2
虚拟机版本: CentOS 7JDK版本:1.8(需提前安装好,保证 命令 "java -version" 有输出版本信息)es版本: elasticsearch 7.6.2从官网下载后解压运行,https://www.elastic.co/cn/downloads下面的步骤是官网教程:https://www.elastic.co/guide/en/elasticsearch/r...原创 2020-04-20 11:11:11 · 739 阅读 · 0 评论