当前位置: 首页 > news >正文

Elastic Search 的安装、使用方式

1.Elastic Search

        elasticsearch是一款非常强大的开源搜索引擎,支持的功能非常多。数据库模糊查询随着表数据量的增多,查询性能的下降会非常明显,而搜索引擎的性能则不会随着数据增多而下降太多。目前仅10万不到的数据量差距就如此明显,如果数据量达到百万、千万、甚至上亿级别,这个性能差距会非常夸张。数据库的模糊搜索功能单一,匹配条件非常苛刻,必须恰好包含用户搜索的关键字。而在搜索引擎中,用户输入出现个别错字,或者用拼音搜索、同义词搜索都能正确匹配到数据。

  • Elasticsearch:用于数据存储、计算和搜索

  • Logstash/Beats:用于数据收集

  • Kibana:用于数据可视化

整套技术栈被称为ELK,经常用来做日志收集、系统监控和状态分析等等

2.es安装

在docker环境中拉取镜像,如果镜像拉取困难,我已经提供好了镜像tar包,可以直接下载

通过网盘分享的文件:kibana.tar等2个文件
链接: https://pan.baidu.com/s/15BwRa6wBfosRjeggmRzAvw?pwd=0218 提取码: 0218

执行命令

# 加载es镜像
docker load -i es.tar
# 加载kibana镜像
docker load -i kibana

创建容器

注意两个容器要处于同一个网络

# 创建es容器
docker run -d \--name es \-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \-e "discovery.type=single-node" \-v es-data:/usr/share/elasticsearch/data \-v es-plugins:/usr/share/elasticsearch/plugins \--privileged \--network net \ # 你的网络名称-p 9200:9200 \-p 9300:9300 \elasticsearch:7.12.1# 创建kibana容器
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=net \  # 你的网络名称
-p 5601:5601  \
kibana:7.12.1

启动容器

docker start es
docker start kibana

 kibana是es的可视化插件,它会自动代理到es的端口

浏览器访问 宿主机的5601端口

点击 Explorer on my own

 点击 Dev tools

进入操作界面即可进行使用

3.使用方式

          elastic是一款分布式搜索引擎,通过倒排索引的方式,可以优化复杂的条件查询的效率。我是使用的docker环境进行的部署es,首先就是要拉取es的镜像,以及图形化界面kibana的镜像,然后进行构建。在项目中引入相关依赖,就可以进行使用了

          创建索引:

PUT /products
{"settings": { "number_of_shards": 1, "number_of_replicas": 0 },"mappings": {"properties": {"title": { "type": "keyword" },"price": { "type": "double" },"description": { "type": "text" }}}
}

          查询与删除索引

  • GET /_cat/indices?v 查看所有索引。

  • DELETE /products 删除指定索引

         添加文档:

POST /products/_doc/1  (指定id)
{ "title": "iphone13", "price": 8999.99 }

         更新文档:

        全量替换(PUT)或局部更新(POST /_update

POST /products/_doc/1/_update
{ "doc": { "title": "iPhone15" } }

 

        全文搜索(match

        适用于 text 类型字段,支持分词,类似 SQL 的 LIKE 操作

GET /article/_search
{"query": { "match": { "title": "ES教程" } }
}

        精确匹配(term

        针对 keyword 或数值类型字段,不进行分词 

GET /order/_search
{"query": { "term": { "order_no": "20240315001" } }
}

        范围查询(range

        支持 gt(>)、gte(>=)、lt(<)、lte(<=)参数 

GET /order/_search
{"query": { "range": { "price": { "gte": 100, "lte": 500 } } }
}

        布尔组合查询(bool

        通过 must(AND)、should(OR)、must_not(NOT)组合条件 

GET /order/_search
{"query": {"bool": {"must": [ { "term": { "status": "paid" } }, { "range": { "price": { "gte": 100 } } } ]}}
}

以上是es中几种简单的使用方式,同样es还支持更多更高级的用法,可详见

Elasticsearch:官方分布式搜索和分析引擎 | Elastic

相关文章:

  • 【音视频】RTMP流媒体服务器搭建、推流拉流
  • AVDictionary 再分析
  • 原型模式(Prototype Pattern)详解
  • Redis持久化方式
  • Postgresql源码(145)优化器nestloop参数化路径评估不准问题分析
  • 如何免费使用 DeepSeek-Prover-V2?
  • 加密算法(一)-对称加密(DES、AES、3DES、Blowfish、Twofish)一篇了解所有主流对称加密,轻松上手使用。
  • 网络安全防火墙技术有哪些?网络防火墙的主要作用
  • Java朴实无华按天计划从入门到实战(94天直达Java高阶)
  • 【Shell 脚本编程】详细指南:第二章 - 变量与字符串操作
  • Qml组件之Image
  • 数字智慧方案6160丨智慧医疗系统平台建设方案(46页PPT)(文末有下载方式)
  • Go-web开发之社区功能
  • B站Michale_ee——ESP32_IDF SDK——FreeRTOS_2 队列
  • 2025大模型微调视频课程全套(附下载)
  • 2025年渗透测试面试题总结-拷打题库30(题目+回答)
  • Curl 全面使用指南
  • node.js模块化步骤(各标准区别)CommonJS规范、AMD规范、UMD规范、ES Modules (ESM)
  • 小刚说C语言刷题—1602总分和平均分
  • 基于若依RuoYi-Vue3-FastAPI 的 Docker 部署记录
  • 韩国前国务总理韩德洙正式宣布参加总统选举
  • 魔都眼|买买买,老铺黄金新店开业被挤爆:有人排队5小时
  • 马克思主义理论研究教学名师系列访谈|丁晓强:马克思主义学者要更关注社会现实的需要
  • 建行一季度净利833.51亿同比下降3.99%,营收降5.4%
  • 上海74岁老人宜春旅游时救起落水儿童,“小孩在挣扎容不得多想”
  • IPO周报|4月最后2只新股周一申购,今年以来最低价股来了