谷粒商城项目总结--Elasticsearch

2023-11-14

官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
官方中文:https://www.elastic.co/guide/cn/elasticsearch/guide/current/foreword_id.html
社区中文:
https://es.xiaoleilu.com/index.html
http://doc.codingdict.com/elasticsearch/0/

一、基本概念

1、Index(索引)

动词,相当于 MySQL 中的 insert; 名词,相当于 MySQL 中的 Database

2、Type(类型)

在 Index(索引)中,可以定义一个或多个类型。 类似于 MySQL 中的 Table;每一种类型的数据放在一起;

3、Document(文档)

保存在某个索引(Index)下,某种类型(Type)的一个数据(Document),文档是 JSON 格 式的,Document 就像是
MySQL 中的某个 Table 里面的内容;

在这里插入图片描述
4、倒排索引机制

二、安装

1、下载镜像文件

docker pull elasticsearch:7.4.2 存储和检索数据
docker pull kibana:7.4.2 可视化检索数据

2、创建实例

#挂载目录
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data

#host: 0.0.0.0 es可以被远程任何机器访问
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml

#保证权限
chmod -R 777 /mydata/elasticsearch/

#启动容器
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2

特别注意:
-e ES_JAVA_OPTS="-Xms64m -Xmx256m" \ 测试环境下,设置 ES 的初始内存和最大内存,否则导 致过大启动不了 ES

Kibana

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.56.10:9200 -p 5601:5601 \
-d kibana:7.4.2

三、初步检索

1、_cat

GET /_cat/nodes 查看所有节点
GET /_cat/health 查看 es 健康状况
GET /_cat/master 查看主节点
GET /_cat/indices 查看所有索引 相当于mysql中show databases;

2、索引一个文档(保存)

保存一个数据,保存在哪个索引的哪个类型下,指定用哪个唯一标识

PUT customer/external/1

在 customer 索引下的 external 类型下保存 1 号数据为

PUT customer/external/1 {
    "name": "John Doe" }

PUT 和 POST 都可以,
POST 新增。如果不指定 id会自动生成 id。指定 id 会修改这个数据并新增版本号
PUT可以新增可以修改。PUT 必须指定 id;由于 PUT 需要指定 id,我们一般都用来做修改 操作,不指定 id 会报错。

3、查询文档

GET customer/external/1

结果:

{ “_index”: “customer”, //在哪个索引
“_type”: “external”, //在哪个类型
“_id”:“1”, //记录 id
“_version”: 2, //版本号
“_seq_no”: 1,//并发控制字段,每次更新就会+1,用来做乐观锁
“_primary_term”: 1, //同上,主分片重新分配,如重启,就会变化
“found”: true,
“_source”: { //真正的内容
“name”: “John Doe”
} }

更新携带 ?if_seq_no=0&if_primary_term=1 乐观锁修改

4、更新文档

POST customer/external/1/_update {
    "doc":{
    "name": "John Doew"}}

或者

POST customer/external/1 {
    "name": "John Doe2"}

或者

PUT customer/external/1 {
    "name": "John Doe"}

不同:POST 操作会对比源文档数据,如果相同不会有什么操作,文档 version 不增加 PUT 操作总会将数据重新保存并增加version 版本; 带_update 对比元数据如果一样就不进行任何操作。

看场景; 对于大并发更新,不带 update; 对于大并发查询偶尔更新,带 update;对比更新,重新计算分配规则。

#更新同时增加属性
POST customer/external/1/_update {
    "doc": {
    "name": "Jane Doe", "age": 20 }}

PUT 和 POST 不带_update 也可以增加属性

5、删除文档&索引

DELETE customer/external/1
DELETE customer

6、bulk 批量 API

POST customer/external/_bulk
{
   "index":{
   "_id":"1"}}
{
   "name": "John Doe" }
{
   "index":{
   "_id":"2"}}
{
   "name": "Jane Doe" }
#语法格式
{
    action: {
    metadata }}
{
    request body }
{
    action: {
    metadata }}
{
    request body }
复杂实例:
POST /_bulk
{
    "delete": {
    "_index": "website", "_type": "blog", "_id": "123" }}
{
    "create": {
    "_index": "website", "_type": "blog", "_id": "123" }}
{
    "title": "My first blog post" }
{
    "index": {
    "_index": "website", "_type": "blog" 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

谷粒商城项目总结--Elasticsearch 的相关文章

随机推荐

  • vue渲染数据时,v-html中的图片如何点击放大 以及 markdowm数据中的图片点击如何放大

    记录一下在部署博客的时候 文章中的内容点击图片不能放大的问题 效果展示 http zfc life sm 我先展示实现的代码 1 template 2 data 3 created 4 methods 上面的代码不是我写的 我只是在原有代码
  • C++实现通讯录管理系统(完整代码)课设或实验

    好久没写文章了 终于结束了满课的前三周以及烦人的考试 可以有多余的时间来自己学习 今天学习了利用C 实现通讯录管理系统 自己手敲了一遍 可以用来当实验题的答案或课设哦 具体的解释在代码注释当中 include
  • Qt中的d指针和q指针

    概述 如果程序从一个以前版本的库动态链接到新版本的库之后 能够继续正常运行 而不需要重新编译 那么我们就说这个库是二进制兼容的 如果一个程序需要重新编译来运行一个新版本的库 但是不需要对程序的源代码进一步的修改 这个库就是源代码兼容的 如果
  • 为什么做弱网测试?怎么做

    为什么要做弱网测试 弱网测试 属于健壮性测试的内容 为什么要做呢 尤其是现在的人们更习惯在地铁里 公交上 甚至是电梯 车库等等的场景里去关注一些新闻 看看小说 直播 玩游戏等等 在这个时候 我们就需要针对这些场景 去关注一下应用的运行状态
  • 尚硅谷-尚品汇项目开发总结(第三天)

    4 Home静态组件的拆分与postman测试接口是否可用 4 1 Home组件的拆分 注意点 HTML CSS 图片 4 2 postman测试接口 5 axios二次封装与配置代理服务器 nprogress进度条插件的使用 5 1 ax
  • 反转链表的四种方法

    目录 1 第一种方法 原地反转 2 第二种方法 利用头插法进行反转链表 3 第三种方法 利用迭代法进行反转链表 4 第四种方法 利用递归法进行反转链表 5 应用 当我们学习链表之后 就要学习一些链表的操作 而反转链表是我们必备技能 这里总结
  • SQL注入详解

    一 sql基础 1 sql注入原理 针对SQL注入的攻击行为可描述为通过用户可控参数中注入SQL语法 破坏原有SQL结构 达到编写程序意料之外结果的攻击行为 其成因可归结为以下两个原理叠加造成 1 程序编写者在处理程序和数据库交互时 使用字
  • stm32 OV7670/摄像头模块颜色区域定位(腐蚀中心算法)

    前两天用到的摄像头模块ov7670 想在摄像头做一个色块识别 查阅了部分资料和教程 发现有用的文章挺多 于是下载了几个demo 学习了一下 感谢一些博主的分享 今天整理一下分享给大家 实现原理 将摄像头的数据读出写入tft屏 读取tft屏幕
  • Qt设置不规则窗体(Mask)

    创建新项目testMask 继承QWidget 添加Qt Resource file文件 添加图片资源 往ui界面中拖入一个label标签部件 标签文字内容设置为空白 widget h ifndef WIDGET H define WIDG
  • openGauss学习笔记-26 openGauss 高级数据管理-约束

    文章目录 openGauss学习笔记 26 openGauss 高级数据管理 约束 26 1 NOT NULL约束 26 2 UNIQUE约束 26 3 PRIMARY KEY 26 4 FOREIGN KEY 26 5 CHECK约束 o
  • js校验数据,是否填写(可校验全部文件是否上传),或者同名的name

    核心代码 var ff document getElementsByTagName input for var i 0 i lt ff length i if ff i type file ff i name uploadfile aler
  • 多元回归预测

    文章目录 效果一览 文章概述 部分源码 参考资料 效果一览 文章概述 多元回归预测 Matlab生成对抗网络 GAN 数据回归预测 GAN回归预测 多输入单输出模型 部分源码
  • LeetCode 25. K 个一组翻转链表

    题目链接 https leetcode cn com problems reverse nodes in k group 首先判断后面的节点够不够一组 k个节点 然后进行组内 k个节点 翻转 最后修改组头节点和组尾节点的指向 struct
  • SLIP、PPP、PPPoE、L2TP以及PPTP协议

    SLIP协议 全称Serial Line Internet Protocol 串行线路网际协议 该协议是Windows远程访问的一种旧工业标准 主要在Unix远程访问服务器中使用 因为SLIP协议是面向低速串行线路的 可以用于专用线路 也可
  • threejs点击模型实现模型边缘高亮的选中效果--更改后提高帧率

    先来个效果图 之前写的那个稍微有点问题 帧率只有30 参照官方代码修改后 帧率可以达到50了 在不全屏的状态下 帧率60 1 首先需要导入库 用于模型边缘高亮 import EffectComposer from three example
  • 2023第十四届蓝桥杯国赛 C/C++ 大学 B 组

    省赛还水了个省一 国赛原型毕露了 参考文献 13条消息 2023第十四届蓝桥杯国赛 C C 大学 B 组 旧林墨烟的博客 CSDN博客 13条消息 2023第十四届蓝桥杯国赛 C C 大学 B 组 赛后记录 Zero的博客 CSDN博客 A
  • Python3:我低调的只用一行代码,就导入Python所有库!

    一行代码导入python所有库 1 引言 2 Pyforest 2 1 Pyforest 介绍 2 2 Pyforest 安装与使用 2 2 1 安装 2 2 2 使用 3 总结 1 引言 今天我们来分享一个懒人库 Pyforest 小屌丝
  • 数据分析:pandas

    pandas 常用数据类型 Series创建 Series切片和索引 DataFrame 读取外部数据 dataframe创建 dataframe基本属性查询 排序 取行列 布尔索引 字符串方法 缺失数据处理 数据合并 join merge
  • Week2 Git 入门1: Advanced git interaction

    通过cd 命令 进入一个git repository的目录 执行 atom psript py 用atom 打开当前repo里的psript py文件 改写sript py文件 可以直接使用git commit a m 命令提交并保存本次修
  • 谷粒商城项目总结--Elasticsearch

    Elasticsearch 一 基本概念 二 安装 三 初步检索 1 cat 2 索引一个文档 保存 3 查询文档 4 更新文档 5 删除文档 索引 6 bulk 批量 API 7 样本测试数据 四 进阶检索 1 检索信息 2 Query