![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
ElasticSearch 源码分析
文章平均质量分 92
Elastic
0x13
coding...
展开
-
Elasticsearch 混合检索优化大模型 RAG 任务
Elastic 社区在自然语言处理上面做的很不错官方博客更新速度也很快,现阶段大模型的应用场景主要在 Rag 和 Agent 上,国内 Rag(Retrieval-Augmented Generation 检索增强生成) 的尤其多,而搜索对于 Elasticsearch 来说是强项特别是 8.9 之后的版本提供了 ESRE 模块(集成了高级相关性排序如 BM25f、强大的矢量数据库、自然语言处理技术、与第三方模型如 GPT-3 和 GPT-4 的集成,并支持开发者自定义模型与应用),经过我的各种尝试在 El原创 2024-04-16 16:55:29 · 1389 阅读 · 2 评论 -
【Elasticsearch】ES机器学习源码分析
它是一种数据框分析,通过分析每个数据点与其他数据点的接近程度及其周围点簇的密度来识别数据集中的异常点。以 customer_full_name(顾客名称)为实体聚合每个顾客所有订单的总金额 sum/avg(taxful_total_price),得到一个每个顾客的平均消费金额和总消费金额,也就是 transfer 得到的是一般意义的样本数据而不是 datafeed 一样的时序数据。这是一种监督的途径。在这种模式下,用户不用训练机器学习什么是异常,期望得到的是什么,什么是对的,什么是错误的。原创 2023-02-18 15:49:37 · 16270 阅读 · 0 评论 -
【Elasticsearch】分片和副本 allocation
ExistingShardsAllocator.UnassignedAllocationHandler.initialize() -> 判断前面主、副未分配shard经过各自的 决策器返回 YES,则修改 shard 的状态,由 unassigend(未分配) 改为 initalizer(初始化)。AllocationService.reroute() => 开始 reroute 流程,判断集群状态中记录的所有index的shard是否有未分配的,并判断是否能进行某个节点分配。原创 2023-02-08 22:36:06 · 522 阅读 · 0 评论 -
【Elasticsearch】模块管理 Guice
通过上面的绑定,在后续调用 Injector.getInstance(clazz) 可以直接获取到目标实例,比如 GatewayAllocator.class 这个服务,Guice 在创建这个服务对象(asEagerSingleton标记为单例)时同时会注入依赖,而依赖是通过 @Inject 注解标注的,Guice 也正是识别这个注解来自动注入下来。容器存在的意义主要是实现依赖注入,也就是通过容器获取一个目标类的对象时,这个对象依赖的其他对象能够自动注入然后拼装成最终的我们需要的对象进行返回。原创 2023-02-08 22:32:25 · 381 阅读 · 0 评论 -
【Elasticsearch】网络模块 transport
集群通信TCP客户端处理器,会调用 openConnection() 建立连接,也就是调用前面的 Netty4Transport.initiateChannel() 定义的各个TCP处理器用于集群通信。TransportNodesInfoAction.execute() => 该类没有实现 execute(),会调用父类的 execute(),所以想要知道一个 TransportAction 子类的功能只需要关注他的 execute() 或者 doExecute() 方法即可。原创 2023-02-08 22:23:38 · 734 阅读 · 0 评论 -
【Elasticsearch】raft 选举
不,现在的做法不再记录“quorum” 的具体数值,取而代之的是记录一个节点列表,这个列表中保存所有具备 master 资格的节点(有些情况下不是这样,例如集群原本只有1个节点,当增加到2个的时候,这个列表维持不变,因为如果变成2,当集群任意节点离线,都会导致无法选主。5.同理, 节点收到 Master 节点发来的集群状态 ,在处理二段提交的第二阶段: CoordinationState::handleCommit 中,如果 clusterState中的 term 不等于当前 term,则拒绝该请求。原创 2023-02-08 22:20:57 · 282 阅读 · 0 评论 -
【Elasticsearch】elasticsearch 优化
添加一条documentPUT /test_index/test_type/1{ "test_content":"test test"}#查询GET /test_index/test_type/1#返回{ "_index" : "test_index", "_type" : "test_type", "_id" : "1", "_version" : 2, "found" : true, "_source" : { "test_content" : "test test" }}原创 2022-11-09 23:14:44 · 645 阅读 · 0 评论 -
【Elasticsearch】开发 packet-beat 插件
Elastic 的 beat 家族有很多著名的产品比如 filebeat、packetbeat 等,都支持扩展开发,项目使用 go 语言,这里演示开发环境的搭建。原创 2022-11-09 23:14:11 · 794 阅读 · 0 评论