ElasticSearch安装使用一篇搞定⭐

一、什么是Elasticsearch ?

想查数据就免不了搜索,搜索就离不开搜索引擎,百度、谷歌都是一个非常庞大复杂的搜索引擎,他们几乎索引了互联网上开放的所有网页和数据。然而对于我们自己的业务数据来说,肯定就没必要用这么复杂的技术了,如果我们想实现自己的搜索引擎,方便存储和检索,Elasticsearch 就是不二选择,它是一个全文搜索引擎,可以快速地储存、搜索和分析海量数据。

二、为什么使用Elasticsearch ?

Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 那 Lucene 又是什么?Lucene 可能是目前存在的,不论开源还是私有的,拥有最先进,高性能和全功能搜索引擎功能的库,但也仅仅只是一个库。要用上 Lucene,我们需要编写 Java 并引用 Lucene 包才可以,而且我们需要对信息检索有一定程度的理解才能明白 Lucene 是怎么工作的,反正用起来没那么简单。 那么为了解决这个问题,Elasticsearch 就诞生了。Elasticsearch 也是使用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目标是使全文检索变得简单,相当于 Lucene 的一层封装,它提供了一套简单一致的 RESTful API 来帮助我们实现存储和检索。 所以 Elasticsearch 仅仅就是一个简易版的 Lucene 封装吗?那就大错特错了,Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎。 它可以被下面这样准确的形容:

  • 一个分布式的实时文档存储,每个字段可以被索引与搜索
  • 一个分布式实时分析搜索引擎
  • 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据

三、Windows如何安装Elasticsearch

这里比较推荐的是使用docker desktop 几行命令,即可安装成功,相比于下载压缩包再解压之类方便不少。

检验Docker desktop是否安装成功

先打开cmd命令终端输入:

docker --version

检验是否真正的安装了docker,如果安装了但是在cmd输入命令没有显示,大概率是没有配置docker的环境变量

Docker安装 ES

拉取 ES的镜像

docker pull elasticsearch:6.6.2

使用以下命令在后台启动Elasticsearch容器,并将虚拟机的9200端口映射到Elasticsearch的9200端口

docker run -d -p 9200:9200 --name=es elasticsearch:6.6.2

使用以下命令拉取Elasticsearch-head镜像:

docker pull mobz/elasticsearch-head:5

使用以下命令在后台启动Elasticsearch-head容器,并将容器的9100端口映射到主机的9100端口:

docker run -d -p 9100:9100 --name=es-head mobz/elasticsearch-head:5

检验ES是否安装成功

在浏览器网址中输入

localhost:9100

在这里插入图片描述
点击连接检测是否成功,如果点击没有反应的话
请打开Docker Desktop
在这里插入图片描述
需要修改配置的文件路径:

/usr/share/elasticsearch/config/elasticsearch.yml

编辑该文件,在最后加入:

http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: "*"

镜像重启后刷新网页是否成功

四、如何使用Elasticsearch

Python 测试Elasticsearch是否可以连接成功

pip install elasticsearch
from elasticsearch import Elasticsearch

# 创建一个连接到本地ElasticSearch实例的客户端
es = Elasticsearch([{'host': 'localhost', 'port': 9200}]) # es = Elasticsearch()

print(es.ping())  # True 是连接成功的

如果连接失败,返回的是False,请根据以下方法进行改正:

pip show elasticsearch

展示ES的版本号,如果版本大于7.14之类的,重新下载ES的Py包,具体原因还未知

pip install elastcisearch==7.13.0

索引一个文档

doc = {
    'author': 'Min Guang',
    'text': 'Elasticsearch: cool. bonsai cool.',
    'timestamp': '2024-07-13'
}

将文档索引到名为 “test-index” 的索引中,并指定文档ID为 1

res = es.index(index="test-index", id=1, document=doc)
print(res['result'])

根据文档ID检索文档

res = es.get(index="test-index", id=1)
print(res['_source'])

更新文档

update_doc = {
    'doc': {
        'text': 'Elasticsearch: amazing. bonsai amazing.'
    }
}

res = es.update(index="test-index", id=1, body=update_doc)
print(res['result'])

删除文档

res = es.delete(index="test-index", id=1)
print(res['result'])

批量索引多个文档

from elasticsearch import helpers

actions = [
    {
        '_index': 'test-index',
        '_id': 2,
        '_source': {
            'author': 'Jane Doe',
            'text': 'Elasticsearch: fantastic.',
            'timestamp': '2024-07-13'
        }
    },
    {
        '_index': 'test-index',
        '_id': 3,
        '_source': {
            'author': 'Mike Smith',
            'text': 'Elasticsearch: superb.',
            'timestamp': '2024-07-13'
        }
    }
]

helpers.bulk(es, actions)

基本搜索查询

query = {
    'query': {
        'match': {
            'text': 'Elasticsearch'
        }
    }
}

res = es.search(index="test-index", body=query)
for hit in res['hits']['hits']:
    print(hit['_source'])

基本聚合查询

query = {
    'size': 0,
    'aggs': {
        'all_authors': {
            'terms': {
                'field': 'author.keyword'
            }
        }
    }
}

res = es.search(index="test-index", body=query)
print(res['aggregations']['all_authors']['buckets'])

创建一个新索引

index_settings = {
    'settings': {
        'number_of_shards': 1,
        'number_of_replicas': 0
    },
    'mappings': {
        'properties': {
            'author': {'type': 'text'},
            'text': {'type': 'text'},
            'timestamp': {'type': 'date'}
        }
    }
}

res = es.indices.create(index='test-index', body=index_settings)
print(res['acknowledged'])

删除一个索引

res = es.indices.delete(index='test-index')
print(res['acknowledged'])

获取索引信息

res = es.indices.get(index='test-index')
print(res)

在与 ElasticSearch 交互时,可能会遇到各种错误。例如,尝试检索不存在的文档或索引会引发异常。可以使用 try-except 块来处理这些错误:


from elasticsearch.exceptions import NotFoundError

try:
    res = es.get(index="test-index", id=1)
    print(res['_source'])
except NotFoundError:
    print("Document not found.")

五、参考资料

Elasticsearch 基本介绍

Docker Desktop上安装Elasticsearch

安装使用Elasticsearch,您可以按照以下步骤进行操作: 1. 下载并安装Java:Elasticsearch是用Java编写的,因此您需要先安装Java。您可以从Oracle官方网站下载并安装适合您操作系统的Java版本。 2. 下载Elasticsearch:在Elasticsearch官方网站(https://www.elastic.co/downloads/elasticsearch)上下载适合您操作系统的Elasticsearch版本。 3. 解压缩Elasticsearch:将下载的文件解压缩到您选择的目录中。 4. 配置Elasticsearch:进入解压缩后的Elasticsearch目录,找到config文件夹。在该文件夹中,您可以编辑elasticsearch.yml文件以进行配置。您可以根据需要更改默认配置,例如集群名称、网络绑定地址等。 5. 启动Elasticsearch:在命令行中进入Elasticsearch目录,并运行bin/elasticsearch命令来启动Elasticsearch。请确保在启动之前Java已正确配置,并且没有其他进程在占用所需的端口。 6. 验证安装使用curl或浏览器访问http://localhost:9200,您应该能够看到Elasticsearch的版本信息。如果您能成功访问,表示安装成功。 一旦您安装Elasticsearch,您可以使用其RESTful API进行索引、搜索和管理数据。您还可以使用Kibana等工具来可视化和分析数据。请记住,Elasticsearch是一个功能强大而复杂的工具,您可能需要学习更多关于其配置和使用的知识。可以查阅Elasticsearch官方文档以获取更多详细信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北方以南ccc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值