ElasticSearch环境准备

Elasticsearch 是一个基于 Apache Lucene™ 的开源搜索引擎。不仅仅是一个全文搜索引擎,它还是一个分布式的搜索和分析引擎,可扩展并能够实时处理大数据。以下是关于 Elasticsearch 的一些主要特点和说明:

1.实时分析:Elasticsearch 能在大量数据上执行复杂的查询,并迅速返回结果。

2.分布式设计:它自动将数据分片,并在集群的不同节点上复制这些分片,以提供冗余和高可用性。

3.高可扩展性:可以简单地添加新节点,而 Elasticsearch 会自动重新平衡和路由数据。

4.多种数据类型:除了文本外,Elasticsearch 还可以处理结构化数据、数值、地理位置等数据。

5.基于 JSON:数据结构为 JSON 文档,并使用 HTTP RESTful API 进行通信。

6.灵活的查询语言:Elasticsearch 提供了一种非常灵活的查询语言,可以执行简单的文本查询到复杂的聚合查询。

7.集成与客户端库:Elasticsearch 提供了多种语言的官方客户端,如 Java、Python、PHP、JavaScript 等。

Elasticsearch 在许多应用中被广泛使用,包括日志和事件数据分析、内容搜索、数据可视化、地理搜索等。无论是在大型企业还是在初创公司,它都是实时搜索和分析大数据的流行选择。在本应用中,我们有大量的非结构化文档要存储(PDF、TXT和HTML),而ElasticSearch恰好可以帮助我们实现相应的检索功能。

我们通过Docker可以很方便的下载并启动一个ElasticSearch服务,执行下列命令即可。

bash 复制代码
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.10.2
docker run --name es01 -d -p 9200:9200 -it -m 1GB docker.elastic.co/elasticsearch/elasticsearch:8.10.2

需要注意的是,如果在Windows上通过Docker(WSL 2支持)启动ElasticSearch,遇到报错"node validation exception\n[1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch.\nbootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]",则需要配置一个参数。

bash 复制代码
wsl -d docker-desktop -u root
vi /etc/sysctl.conf

然后在文件中添加下面这一行。

bash 复制代码
vm.max_map_count = 262144

ElasticSearch第一次启动时,会创建一个默认用户elastic以及一个密码,如图6.x所示。这个用户认证信息只有在第一次启动时才会打印,因此我们需要将这个账号和密码记下来。

如果要在本地通过https链接到ElasticSearch,则还需要拷贝SSL证书到本地。

bash 复制代码
docker cp es01:/usr/share/elasticsearch/config/certs/http_ca.crt .

接下来我们可以通过Python的Elasticsearch库进行基本的Elasticsearch操作。

1.安装elasticsearch

bash 复制代码
pip install elasticsearch

2.设置和初始化连接

python 复制代码
from elasticsearch import Elasticsearch
client = Elasticsearch(
    "https://localhost:9200",
    ca_certs="./http_ca.crt",
    basic_auth=("elastic", "R+JWq7gBc4_rAPSN3gj7")
)

该部分首先从elasticsearch模块导入Elasticsearch类。然后,创建一个Elasticsearch客户端实例,并连接到本地运行在9200端口上的Elasticsearch服务器。使用ca_certs参数指定证书路径,并使用basic_auth参数为连接提供身份验证凭证。

3.创建索引

python 复制代码
client.indices.create(index="my_index", ignore=400)

这个命令尝试在Elasticsearch中创建一个名为my_index的新索引。ignore=400意味着如果索引已存在,将忽略400错误。

4.向索引中添加文档

python 复制代码
client.index(
    index="my_index",
    id="my_document_id",
    document={
        "foo": "foo",
        "bar": "bar",
    }
)

通过index方法将一个新文档添加到my_index索引中,并为其分配一个ID为my_document_id

5.检索文档

python 复制代码
client.get(index="my_index", id="my_document_id")

该命令从my_index索引中检索ID为my_document_id的文档。

6.搜索文档

python 复制代码
client.search(index="my_index", query={
    "match": {
        "foo": "foo"
    }
})

my_index索引中执行一个搜索查询,查找字段foo值为foo的文档。

7.更新文档

python 复制代码
client.update(index="my_index", id="my_document_id", doc={
    "foo": "bar",
    "new_field": "new value",
})

更新ID为my_document_id的文档,更改字段foo的值并添加一个新字段new_field

8.删除文档

python 复制代码
client.delete(index="my_index", id="my_document_id")

my_index索引中删除ID为my_document_id的文档。

9.删除索引

python 复制代码
client.indices.delete(index="my_index")

删除整个my_index索引。

相关推荐
AI营销干货站12 小时前
2025 AI市场舆情分析软件测评:原圈科技等3款工具深度对比
大数据·人工智能
金融Tech趋势派12 小时前
2026企业微信私有化部署新选择:微盛·企微管家如何助力企业数据安全与运营效率提升?
大数据·人工智能·云计算·企业微信
短视频矩阵源码定制12 小时前
专业的矩阵系统哪个公司好
大数据·人工智能·矩阵
Gofarlic_oms113 小时前
Cadence许可证全生命周期数据治理方案
java·大数据·运维·开发语言·人工智能·安全·自动化
TDengine (老段)13 小时前
从“被动养护”到“主动预警”,TDengine IDMP 让智慧桥梁靠数据“说话”
大数据·数据库·人工智能·物联网·时序数据库·tdengine·涛思数据
2501_9240641113 小时前
2025年APP隐私合规测试主流方法与工具对比分析
大数据
武子康13 小时前
大数据-199 决策树模型详解:节点结构、条件概率视角与香农熵计算
大数据·后端·机器学习
jiayong2313 小时前
知识库最佳实践与优化指南04
大数据·人工智能·机器学习
老徐电商数据笔记13 小时前
电商数仓存储格式(Textfile/Orc/Parquet)深度解析:五大实战方案与选型指南
大数据·数据仓库·技术面试·数据存储格式
木风小助理13 小时前
UNIX 与 Linux 发展简史
大数据