Elasticsearch 向量数据库本地部署 及操作方法

elasticsearch是个分布式向量数据库,支持多种查找模式。此外还拥有 Metadata、Filtering、Hybrid Search、Delete、Store Documents、Async等能力。本文仅是记录本地测试途中遇到的问题。

一,环境部署

下载软件

首先去官网,选择适合平台下载

https://www.elastic.co/downloads/elasticsearch

启动配置

解压后找到config目录下的elasticsearch.yml

找到98行将这里改为false,否则我们无法在浏览器中正常访问

然后找到32、37行设置数据和记录的存储位置

找到92行设为false,否则会提示安全错误

设置后保存即可

启动数据库

回到上层,进入bin目录,找到bat可执行文件双击后等待,

随后弹出控制台,若无报错信息便是启动成功了

完成启动后用浏览器访问localhost:9200 或127.0.0.1:9200,如果看到如下信息就算可以成功访问了

二,操作数据库(浏览器api)

可以直接通过http api、postman来操作es数据库。

创建索引
模式:PUT 
参数:/products(索引名 )
数据:
{
  "settings": {
    "number_of_shards": 1, (主分片的数量)
    "number_of_replicas": 0 (副本分片的数量)
  }
}
添加文档
模式:POST
参数: /products/_doc/1(指定文档id 1,如果不写doc 1 那么就会自动生成id)
{
  "title":"天气",
  "content":"晴天霹雳"
}
查询文档
模式:GET
参数:/products/_doc/1(指定文档id)
更新文档

es中更新文档是先删除再添加

模式:PUT
参数:/products/_doc/1(指定文档id)
删除文档
模式:DELETE
参数:/products/_doc/1(指定文档id)

三,操作数据库(Python)

安装Elasticsearch

pip install Elasticsearch

初始化
python 复制代码
from flask import Flask, request, jsonify
from elasticsearch import Elasticsearch
#链接目标数据库
es = Elasticsearch(hosts="localhost:9200") 
创建索引
python 复制代码
es.indices.create(index='游戏攻略', body={}) 
向索引插入文档
python 复制代码
		doc = {
            'title':title,
            'content':content
        }
    
        es.index(index='游戏攻略', body=doc)
查找索引
python 复制代码
		query = {
            'query': {
                'match': {
                    # 'title': title,
                    'content': content
                }
                # "match_all": {}
            }
        }
        result = self.es.search(index=indexName, body=query)
        # print(result)
        if result['_shards']['total'] > 0:
            print('找到相关数据')
删除索引
python 复制代码
es.indices.delete(index=index)

四,问题解决

  1. 如果出现"method is deprecated. Use 'Elasticsearch.options()' instead"

    第一种方法:将创建索引的方式改为es.indices.create(index='身份介绍2', body=doc) x这种形式就行了

    第二种方法:版本降级 pip install elasticsearch==7.13.0

  2. 如果在浏览器测试时出现下面这个框,或提示"security_exception",就把elasticserch.yaml 的xpack.security.enabled设为 false

  3. 如果提示"Could not rename log file 'logs/gc.log' to 'logs/gc.log.20' (Permission denied)."

    4.python 安装

    pip install llama-index-vector-stores-elasticsearch

    pip install elasticsearch

相关推荐
追风赶月、9 分钟前
【MySQL】事务(隔离性、MVCC)
数据库·mysql
ʃknight10 分钟前
redis
数据库·redis·缓存
编程修仙44 分钟前
c3p0连接池
数据库·oracle
对许1 小时前
Hadoop的运行模式
大数据·hadoop·分布式
补三补四1 小时前
Django与视图
数据库·python·django·sqlite
程序员总部2 小时前
如何应对Maven中的依赖导入挑战?
数据库·sql·maven
星星点点洲2 小时前
【RAG】RAG 系统的基本搭建流程(ES关键词检索示例)
python·elasticsearch
天空卫士2 小时前
AI巨浪中的安全之舵:天空卫士助力人工智能落地远航
大数据·人工智能·安全·网络安全·数据安全
赵渝强老师3 小时前
【赵渝强老师】管理MongoDB的运行
数据库·mongodb
A仔不会笑3 小时前
MySQL面试篇——性能优化
java·数据库·mysql·面试·性能优化