0基础学习Elasticsearch-Quick start

在这里插入图片描述

文章目录

  • 1 背景
  • 2 前言
  • 3 快速部署ES
  • 4 快速部署Kibana
  • 5 发送请求给ES
    • 5.1 打开Kibana控制台
    • 5.2 通过REST API发送请求
    • 5.3 通过curl发送请求
    • 5.4 添加数据
      • 5.4.1 添加单个document
      • 5.4.2 添加多个document
    • 5.5 搜索数据
      • 5.5.1 搜索所有documents
      • 5.5.2 `match`查询
  • 6 总结

1 背景

因电商项目发展的需要,商品数量越来越大,用户搜索的需求越来越高级(需要支持全文模糊搜索,并且性能要高),因此需要在项目中引入Elasticsearch。笔者0基础,简单看过一些关于Elasticsearch的知识点,今天通过Quick start快速切入Elasticsearch。后续会展开Elasticsearch的学习以及研究。

2 前言

  1. 笔者通过Elasticsearch的官方文档来学习,本文参考自:Quick start
  2. 建议读者先通篇阅读搭建ES的步骤,再回头仔细跟着敲命令搭建

3 快速部署ES

官方有提供试用版的ES云服务,笔者试用期已经过了,因此今天是通过Dokcer手动搭建ES(单节点集群)。

执行以下命令,创建ES容器:

docker network create elastic
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.13.4
docker run --name es01 --net elastic -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -t docker.elastic.co/elasticsearch/elasticsearch:8.13.4

启动成功后,会出现以下这段文字,含有Elasticsearch的秘密以及登录Kibana的token串,需要保存起来,后面会用到:

✅ Elasticsearch security features have been automatically configured!
✅ Authentication is enabled and cluster connections are encrypted.ℹ️  Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`):84fZ4PuywWr_unOcr+JHℹ️  HTTP CA certificate SHA-256 fingerprint:1ebd4a12d92c70ee71467917d89f10dad1d39aa92935b5f8671af20c38cd542fℹ️  Configure Kibana to use this cluster:
• Run Kibana and click the configuration link in the terminal when Kibana starts.
• Copy the following enrollment token and paste it into Kibana in your browser (valid for the next 30 minutes):eyJ2ZXIiOiI4LjEzLjQiLCJhZHIiOlsiMTcyLjIxLjAuMjo5MjAwIl0sImZnciI6IjFlYmQ0YTEyZDkyYzcwZWU3MTQ2NzkxN2Q4OWYxMGRhZDFkMzlhYTkyOTM1YjVmODY3MWFmMjBjMzhjZDU0MmYiLCJrZXkiOiJPV2FHMG84Qm85S1VKZVNRZkJPRTpyNlpWbl84dVE0MkE1NzN0NWw5aGZ3In0=ℹ️ Configure other nodes to join this cluster:
• Copy the following enrollment token and start new Elasticsearch nodes with `bin/elasticsearch --enrollment-token <token>` (valid for the next 30 minutes):eyJ2ZXIiOiI4LjEzLjQiLCJhZHIiOlsiMTcyLjIxLjAuMjo5MjAwIl0sImZnciI6IjFlYmQ0YTEyZDkyYzcwZWU3MTQ2NzkxN2Q4OWYxMGRhZDFkMzlhYTkyOTM1YjVmODY3MWFmMjBjMzhjZDU0MmYiLCJrZXkiOiJOMmFHMG84Qm85S1VKZVNRZkJPRDpxc0pkX1pFZ1FQcTJ3ODU5dURfOG1nIn0=If you're running in Docker, copy the enrollment token and run:`docker run -e "ENROLLMENT_TOKEN=<token>" docker.elastic.co/elasticsearch/elasticsearch:8.13.4`

为方便下面敲命令,我们在Shell客户端保存ES的秘密,执行以下命令:

export ELASTIC_PASSWORD="your_password"

将SSL证书从容器复制到本地电脑:

docker cp es01:/usr/share/elasticsearch/config/certs/http_ca.crt .

验证ES是否有启动成功:

curl --cacert http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200

4 快速部署Kibana

新开一个Shell客户端session,执行以下命令创建Kibana容器:

docker pull docker.elastic.co/kibana/kibana:8.13.4
docker run --name kibana --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:8.13.4

启动成功后,会弹出Kibana的访问地址,复制到浏览器访问即可,注意,如果Kibana是部署在centos虚拟机内,访问地址要用虚拟机的ip地址

5 发送请求给ES

5.1 打开Kibana控制台

按照下图操作,打开Kibana控制台:

在这里插入图片描述

5.2 通过REST API发送请求

在控制台输入

GET /?pretty

点击运行即可,如下图所示:

在这里插入图片描述

5.3 通过curl发送请求

新开一个Shell客户端的session,发送以下命令,其中$ELASTIC_PASSWORD替换成Elasticsearch的密码:

curl --cacert http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200

5.4 添加数据

简单介绍ES中的数据概念:ES中的数据被叫做document,类比关系型数据库中的一行记录,ES中的数据是以JSON结构存储的。ES将document存在可搜索的索引

5.4.1 添加单个document

在Kibana中执行以下命令:

POST books/_doc
{"name": "Snow Crash", "author": "Neal Stephenson", "release_date": "1992-06-01", "page_count": 470}

响应报文的格式如下:

{"_index": "books","_id": "O0lG2IsBaSa7VYx_rEia","_version": 1,"result": "created","_shards": {"total": 2,"successful": 2,"failed": 0},"_seq_no": 0,"_primary_term": 1
}

_id是document在索引中具有唯一标识的作用,可以类比关系型数据库中的主键ID。

5.4.2 添加多个document

执行以下请求,注意,使用 _bulk 端点在一次请求中添加多个文档。批量数据必须是换行符分隔的 JSON (NDJSON)。每行都必须以换行符 (\n) 结尾,包括最后一行。:

POST /_bulk
{ "index" : { "_index" : "books" } }
{"name": "Revelation Space", "author": "Alastair Reynolds", "release_date": "2000-03-15", "page_count": 585}
{ "index" : { "_index" : "books" } }
{"name": "1984", "author": "George Orwell", "release_date": "1985-06-01", "page_count": 328}
{ "index" : { "_index" : "books" } }
{"name": "Fahrenheit 451", "author": "Ray Bradbury", "release_date": "1953-10-15", "page_count": 227}
{ "index" : { "_index" : "books" } }
{"name": "Brave New World", "author": "Aldous Huxley", "release_date": "1932-06-01", "page_count": 268}
{ "index" : { "_index" : "books" } }
{"name": "The Handmaids Tale", "author": "Margaret Atwood", "release_date": "1985-06-01", "page_count": 311}

5.5 搜索数据

5.5.1 搜索所有documents

执行以下命令:

GET books/_search

响应报文中的_source就是构建索引的时候原始的JSON对象

5.5.2 match查询

执行以下命令,查询name中带有brave的document:

GET books/_search
{"query": {"match": {"name": "brave"}}
}

6 总结

  1. 通过官网的Quick start快速上手实操ES查询,使用了Docker部署ES和Kibana,Kibana充当提供控制台的角色,ES充当数据库的角色
  2. 可以通过2种方式发送请求:HTTP REST API;CURL命令,本质也是HTTP
  3. ES中有索引概念,索引中含有多个document,document是由一些JSON Object构成的
  4. 添加document有2个接口:添加单个documentPOST {索引名}/_doc;添加多个documentPOST /bulk,请求参数的格式如下:
{ "index" : { "_index" : "books" } }
{"name": "Revelation Space", "author": "Alastair Reynolds", "release_date": "2000-03-15", "page_count": 585}
  1. 搜索数据有2个接口:全量查GET {索引名}/_search;match查GET {索引名}/_search,请求参数使用如下结构:
{"query": {"match": {"name": "brave"}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/338343.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CISCN 2023 初赛 被加密的生产流量

题目附件给了 modbus.pcap 存在多个协议 但是这道题多半是 考 modbus 会发现 每次的 Query 末尾的两个字符 存在规律 猜测是base家族 可以尝试提取流量中的数据 其中Word Count字段中的22871 是10进制转16进制在转ascii字符串 先提取 过滤器判断字段 tshark -r modbus.pcap …

HTML的标签(标题、段落、文本、图片、列表)

HTML的标签1 标题标签&#xff1a;段落标签&#xff1a;文本标签&#xff1a;图片标签:列表标签&#xff1a;有序列表&#xff1a;无序列表&#xff1a;定义列表&#xff1a;列表案例&#xff1a; 标题标签&#xff1a; 标签&#xff1a;h1~h6 注意&#xff1a;如果使用无效标…

【Linux】日志管理

一、日志进程 1、处理日志的进程 rsyslogd&#xff1a;系统专职日志程序 观察rsyslogd程序&#xff1a; ps aux | grep rsyslogd 2、常见的日志文件 1、系统主日志文件: /var/log/messages 动态查看日志文件尾部&#xff1a; tail -f /var/log/messages 2、安全…

Nginx实战:浏览器缓存

浏览器缓存 浏览器缓存是为了加速浏览&#xff0c;浏览器在用户磁盘上&#xff0c;对最近请求过 的文档进行存储。当访问者再次请求这个页面时&#xff0c;浏览器就可以从 本地磁盘显示文档&#xff0c;这样&#xff0c;就可以加速页面的阅览&#xff0c;缓存的方式节 约了网络…

深入分析 Android Service (完)

文章目录 深入分析 Android Service (完)1. Service 的生命周期管理2. Service 的生命周期方法2.1 onCreate()2.2 onStartCommand(Intent intent, int flags, int startId)2.3 onBind(Intent intent)2.4 onUnbind(Intent intent)2.5 onRebind(Intent intent)2.6 onDestroy() 3.…

2010-2015 年阿拉斯加北坡苔原植物功能类型连续覆盖图

ABoVE: Tundra Plant Functional Type Continuous-Cover, North Slope, Alaska, 2010-2015 2010-2015 年阿拉斯加北坡苔原植物功能类型连续覆盖图 简介 文件修订日期&#xff1a;2021-08-27 数据集版本: 1 摘要 该数据集以 30 米的分辨率提供了阿拉斯加北坡约 12.5 万平方…

[数据集][图像分类]轮胎纹理识别裂纹和正常轮胎分类数据集1028张2类别

数据集类型&#xff1a;图像分类用&#xff0c;不可用于目标检测无标注文件 数据集格式&#xff1a;仅仅包含jpg图片&#xff0c;每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数)&#xff1a;1028 分类类别数&#xff1a;2 类别名称:["cracked","norma…

GIt快速入门(一文学会使用Git)

GIt快速入门 文章目录 GIt快速入门一、为什么要学习Git二、Git的安装1.安装Git2.下载GUI 三、Git的概念1、版本控制2、集中式控制3、分布式控制4、多人协作开发1.并行开发2.分支管理3.冲突解决4.代码审查5.分布式特性 四、Git客户端操作1.界面介绍2.提交操作3.创建分支4.合并分…

前端框架安全防范

前端框架安全防范 在现代Web开发中&#xff0c;前端框架如Angular和React已经成为构建复杂单页面应用&#xff08;SPA&#xff09;的主流工具。然而&#xff0c;随着应用复杂度的增加&#xff0c;安全问题也变得越来越重要。本文将介绍如何在使用Angular和React框架时&#xf…

HashMap在Go与Java的底层实现与区别

在Java中 在Java中hash表的底层数据结构与扩容等已经是面试集合类问题中几乎必问的点了。网上有对源码的解析已经非常详细了我们这里还是说说其底层实现。 基础架构 public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable,…

通过LabVIEW提升生产设备自动化水平

现代制造业对生产设备的自动化水平提出了越来越高的要求。使用LabVIEW这一强大的图形化编程环境&#xff0c;可以显著提升生产设备的自动化程度&#xff0c;改善生产效率和产品质量。本文将详细分析如何通过LabVIEW改善生产设备的自动化水平&#xff0c;并提供具体的实施策略与…

[数据集][图像分类]骨关节炎严重程度分类数据集14038张4分类

数据集类型&#xff1a;图像分类用&#xff0c;不可用于目标检测无标注文件 数据集格式&#xff1a;仅仅包含jpg图片&#xff0c;每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数)&#xff1a;14038 分类类别数&#xff1a;4 类别名称:[“grade0”,“grade2”,“grade3…

如何定义“智慧校园”这个概念

在信息爆炸的时代&#xff0c;教育面临着前所未有的挑战&#xff1a;如何让每个学生在海量知识中找到属于自己的路径&#xff1f;如何让教师的智慧与科技的力量相得益彰&#xff1f;如何让校园成为培养创新思维的摇篮&#xff1f;智慧校园&#xff0c;这一概念的提出&#xff0…

基于 Redis 实现分布式锁的全过程

前言 这一篇文章拖了有点久&#xff0c;虽然在项目中使用分布式锁的频率比较高&#xff0c;但整理成文章发布出来还是花了一点时间。在一些移动端、用户量大的互联网项目中&#xff0c;经常会使用到 Redis 分布式锁作为控制访问高并发的工具。 一、关于分布式锁 总结&#x…

计算机图形学入门05:投影变换

1.投影变换 上一章已经介绍了投影变换&#xff0c;就是将三维图像投影到二维平面上&#xff0c;而投影变换又分为正交投影(Orthographic Projection)和透视投影(Perspective Projection)。如下图&#xff1a; 正交投影 没有近大远小的现象&#xff0c;无论图形与视点距离是远是…

机器学习学习

机器学习类型(按学习方式分):监督学习、半监督学习、无监督学习、强化学习; 通过已知标签训练集训练模型,使用模型及逆行预测、测试; 向量表示法,其中每一维对应一个特征(feature)或者称为属性,记为[x1,x2,...,xn] 特征值、特征、标签,共同完成训练集的数据填充,最…

设计模式基础知识点(七大原则、UML类图)

Java设计模式&#xff08;设计模式七大原则、UML类图&#xff09; 设计模式的目的设计模式七大原则单一职能原则&#xff08;SingleResponsibility&#xff09;接口隔离原则&#xff08;InterfaceSegreation&#xff09;依赖倒转原则&#xff08;DependenceInversion&#xff0…

Python 关于字符串格式化

在Python中&#xff0c;字符串格式化有以下几种方法&#xff1a; 1.可以使用字符串的str.center(width), str.ljust(width), 和 str.rjust(width)方法来实现字符串的居中、左对齐和右对齐操作。 居中对齐&#xff1a; text "Python" centered_text text.center(10…

pytest-sugar插件:对自动化测试用例加入进度条

摘要 在自动化测试过程中&#xff0c;测试进度的可视化对于开发者和测试工程师来说非常重要。本文将介绍如何使用pytest-sugar插件来为pytest测试用例添加进度条&#xff0c;从而提升测试的可读性和用户体验。 1. 引言 自动化测试是软件开发过程中不可或缺的一部分&#xff…

Django Celery技术详解

文章目录 简介安装和配置创建并调度任务启动Celery Worker在视图中调用异步任务拓展功能 简介 Django Celery 是一个为Django应用程序提供异步任务处理能力的强大工具。它通过与消息代理&#xff08;如RabbitMQ、Redis&#xff09;集成&#xff0c;可以轻松地处理需要长时间运…