在基于faiss的分布式特征向量搜索系统一文中,介绍了我是如何借鉴Elasticsearch
的框架来开发分布式向量检索系统的,它在底层利用了faiss
强大的向量检索能力。从7.2
版本开始,Elasticsearch
提供了实验性的向量检索功能。
本文我们来介绍如何使用Elasticsearch
来进行向量检索。
贫,气不改;达,志不改
在基于faiss的分布式特征向量搜索系统一文中,介绍了我是如何借鉴Elasticsearch
的框架来开发分布式向量检索系统的,它在底层利用了faiss
强大的向量检索能力。从7.2
版本开始,Elasticsearch
提供了实验性的向量检索功能。
本文我们来介绍如何使用Elasticsearch
来进行向量检索。
在Spring中扫描package是一个常见的操作,比如扫描package为特定的class创建实例。围绕Spring建立的第三方工具通常也需要扫描package然后向Spring注册特定的实例。比如Mybatis,在启动时会扫描mapper所在的package,为底下定义的mapper生成实例(详见MyBatis探究(三)——MyBatis与Spring的结合及代码探究)。
seaweedfs(github: https://github.com/chrislusf/seaweedfs)是一个非常轻巧、易用的分布式文件系统。当我们考虑自己来搭建分布式文件服务的时候,seaweedfs是一个不错的选择。本文记录seaweedfs的搭建与简单使用过程。
上文Elasticsearch——transport网络模块我们分析了Elasticsearch
中用户与节点、节点与节点之间如何通过网络来通信,本文我们来分析一下通过网络传输的数据是如何被读写的。涉及上文Elasticsearch——transport网络模块相关的内容,本文不再重复。
Elasticsearch
作为一个的分布式搜索引擎,能迅速发展并且流行,一个很大的原因是它大大降低了搜索引擎的使用门槛。想象一下,如果要为我们的后台系统开发一个搜索服务,需要从lucene
开始开发,那将是一项巨大的工程。之所以Elasticsearch
能达到很高的易用性,就在于它将底层的lucene
进行了包装,与用户通过http
请求来交互,屏蔽了诸如数据分片、副本、分布式存储检索、缓存、日志等一系列细节,基本能做到Elasticsearch
宣称的开箱即用的易用程度。
transport
是其中比较重要的一个模块,用户通过transport
模块和Elasticsearch
进行交互,Elasticsearch
多个节点之间也通过transport
模块传输信息。
在基于faiss的分布式特征向量搜索系统一文中,我提到了整个系统是基于Elasticsearch
的框架完成的。本文是对transport
网络模块学习的一个总结。
最近有一个大量处理图片的需求,因为整个后台是用Java做的,因此最开始使用JDK自带的方法来处理。问题是这样处理的效率并不高,所以考虑将图片处理的工具替换成opencv。
最近在服务器上部署程序的时候,接到一个重启之后能自动启动所有服务的需求。这个操作居然不会,之前重启之后都是手动启动服务的,于是赶紧学习并记录一下。详细教程请参考http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html