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

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"}}
}

相关文章:

0基础学习Elasticsearch-Quick start

文章目录 1 背景2 前言3 快速部署ES4 快速部署Kibana5 发送请求给ES5.1 打开Kibana控制台5.2 通过REST API发送请求5.3 通过curl发送请求5.4 添加数据5.4.1 添加单个document5.4.2 添加多个document 5.5 搜索数据5.5.1 搜索所有documents5.5.2 match查询 6 总结 1 背景 因电商项…...

Centos给普通用户添加sudo命令权限

打开sudoers文件 sudo visudo 修改sudoers文件 找到root ALL(ALL) ALL这一行&#xff0c;即如下图标出红线的一行 在此行下新增如下内容: lbs为用给予sudo执行权限的用户名 # 执行sudo命令&#xff0c;需要输入命令 lbs ALL(ALL) ALL 或 # 执行sudo命令&#xff0c;…...

编写备份MySQL 脚本

目录 环境准备 增量备份 增量备份和差异备份 完整代码如下 测试脚本是否正常 星期天运行脚本&#xff08;完全备份&#xff09; 星期一运备份脚本&#xff08;增量备份&#xff09; 星期二备份数据&#xff08;其他天--增量备份&#xff09; 星期三备份数据&#xff08;差异备…...

C语言中的数据类型转换:隐式类型转换与显示类型转换

一. 简介 本文简单学习一下&#xff0c;C语言中的数据类型转换。重点学习一下隐式类型转换。 二. C语言中的数据类型转换&#xff1a;隐式类型转换与显示类型转换 类型转换&#xff08;TypeCasting&#xff09;&#xff1a;在C语言中是将一种数据类型值转换为另一种数据类型…...

Android 安卓通过bindService ServiceConnection 没有响应的问题

bindService 失败且 ServiceConnection 没有响应可能由多种原因造成。以下是一些可能的原因和相应的解决方法&#xff1a; Service未正确声明或注册&#xff1a; 如果Service没有在AndroidManifest.xml文件中正确声明或注册&#xff0c;bindService将会失败。解决方法&#xf…...

python切片(彻底解除对切片的曲解)

sequence[start:stop:step] **start: **step为正时默认为0,step为负时默认为-1 stop:_ step为正时默认为结尾结束,step为负时默认为开始位置_ ss=“abcdefg” 以该字符串举例,ss[start:stop:step]的意思是将字符串ss从start开始截取(包括start),截取到stop(不包括sto…...

Java—— StringBuilder 和 StringBuffer

1.介绍 由于String的不可更改特性&#xff0c;为了方便字符串的修改&#xff0c;Java中又提供了StringBuilder和Stringbuffer类&#xff0c;这两个类大部分功能是相同的&#xff0c;以下为常用方法&#xff1a; public static void main(String[] args) {StringBuilder sb1 n…...

vs2019 c++20 规范 STL库中关于时间的模板

在学习线程的时候&#xff0c;一些函数会让线程等待或睡眠一段时间。函数形参是时间单位&#xff0c;那么在 c 中是如何记录和表示时间的呢&#xff1f;以下给出模板简图&#xff1a; 谢谢...

激光焊接机作为一种高效、精密的焊接设备

激光焊接机是一种用于材料加工时激光焊接的机器&#xff0c;以下是对其的详细介绍&#xff1a; 1. 定义与别称&#xff1a; 激光焊接机&#xff0c;又常称为激光焊机、镭射焊机&#xff0c;是材料加工激光焊接时用的机器。 2. 工作原理&#xff1a; 激光焊接是利用高能量…...

vite为什么速度快

原因 vite快的原因是因为 vite在开发环境中是使用的 esbuild&#xff0c;esbuild 是 go 写的&#xff0c;go 编译型语言、多线程&#xff0c;nodejs 解释型语言、单线程&#xff0c;并且 vite 使用了原生 esm 导入的&#xff0c;所以快一点&#xff0c;当然&#xff0c;这也…...

Java网络编程(下)

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f649; 内容推荐:Java网络编程&#x1f649; &#x1f439;今日诗词:姑苏城外寒山寺&#xff0c;夜半钟声到客船&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主…...

APISIX的安装与测试(springboot服务测试)

安装&#xff1a; 1.1安装依赖&#xff1a; curl https://raw.githubusercontent.com/apache/apisix/master/utils/install-dependencies.sh -sL | bash -1.2 安装 OpenResty yum-config-manager --add-repo https://openresty.org/package/centos/openresty.reposudo yum i…...

AI技术:探索未来智能的无限可能

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;技术已经成为我们这个时代最引人瞩目的科技力量。从简单的自动化任务到复杂的决策支持系统&#xff0c;AI技术正在以前所未有的速度改变着我们的世界。本文将深入探讨AI技术的定义、发展历程、当前应用、面临…...

npm install 出错,按照版本不匹配解决

一、现象 npm install npm WARN config global --global, --local are deprecated. Use --locationglobal instead. npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: panshi-main-web0.1.0 npm ERR! Found…...

【第1章】SpringBoot实战篇之注册接口

文章目录 前言一、代码部分1. User2.UserMapper13. UserSerivce4. UserController15. Result 二、测试1.注册2.再次注册 总结 前言 下面介绍用户注册接口。 一、代码部分 1. User package org.example.springboot3.bigevent.entity;import com.baomidou.mybatisplus.annotat…...

代码随想录-Day25

216.组合总和III 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次&#xff0c;组合可以以任何顺序返回。 示例 1: 输入: k 3, n 7 输…...

JavaWeb_SpringBootWeb基础

先通过一个小练习简单了解以下SpringBootWeb。 小练习&#xff1a; 需求&#xff1a;使用SpringBoot开发一个Web应用&#xff0c;浏览器发起请求/hello后&#xff0c;给浏览器返回字符串"Hello World~"。 步骤&#xff1a; 1.创建SpringBoot项目&#xff0c;勾选We…...

Stable Diffusion生成图片的参数查看与抹除方法

前几天分享了几张Stable Diffusion生成的艺术二维码&#xff0c;有同学反映不知道怎么查看图片的参数信息&#xff0c;还有的同学问怎么保护自己的图片生成参数不会泄露&#xff0c;这篇文章就来专门分享如何查看和抹除图片的参数。 查看图片的生成参数 1、打开Stable Diffus…...

Linux下多线程的相关概念

&#x1f916;个人主页&#xff1a;晚风相伴-CSDN博客 &#x1f496;如果觉得内容对你有帮助的话&#xff0c;还请给博主一键三连&#xff08;点赞&#x1f49c;、收藏&#x1f9e1;、关注&#x1f49a;&#xff09;吧 &#x1f64f;如果内容有误或者有写的不好的地方的话&…...

在java java.util.Date 已知逝去时间怎么求年月日

在java中&#xff0c;可以使用java.util.Date类来获取年、月和日。以下是一种方法&#xff1a; 首先创建一个java.util.Date对象&#xff0c;表示逝去的时间。 Date pastDate new Date(逝去的时间的毫秒数);然后使用java.util.Calendar类来获取年、月和日。 Calendar calen…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文&#xff1a; 一文入门汽车毫米波雷达基本原理 &#xff1a;https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...