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

Elasticsearch快速入门

文章目录

    • Elasticsearch快速入门
      • 核心概念
      • 倒排索引
      • 基本使用
        • 索引操作
          • 创建索引
            • 类型映射[了解]
            • 数据类型[了解]
          • 查看索引
          • 删除索引
        • 文档操作
          • 添加文档
          • 修改文档
          • 删除文档
          • 查询文档
            • 准备数据
            • 主键查询
            • 精确查询
            • 匹配查询

Elasticsearch快速入门

核心概念

Elasticsearch是面向文档的,以json格式存储数据的NoSQL数据库,也是一个全文搜索引擎。

Elasticsearch关系型数据库(如Mysql)
索引(Index)数据库(Database)
类型(Type)表(Table)
文档(Document)行,记录(Row,Record)
字段(Field)列,字段(Column,Field)
映射(Mapping)约束(Schema)

注意:es中的类型在es7.x版本中已经没有,在后面的8.x版本中被彻底删除掉。

倒排索引

倒排索引(Inverted Index),是Elasticsearch中的索引工作机制。倒排索引是区别于正排索引的概念:

  • 正排索引:是以文档对象的唯一ID作为索引,以文档内容作为记录。
  • 倒排索引:指的是将文档内容中的单词作为索引,将包含该词的文档ID作为记录。

在这里插入图片描述

Elasticsearch的工作流程如下,因为使用倒排索引产生的文档记录要比mysql数据行少多了,所以会比较快。

在这里插入图片描述

基本使用

es提供了retfulAPI风格操作接口给开发者对索引、类型、文档、字段、映射等进行增删查改操作。

索引操作
创建索引

请求格式:

PUT /索引名称
类型映射[了解]

相当于在mysql中创建数据表时的字段类型

# 索引名称必须已经存在!
POST /索引名称/类型名称
{"类型名称": { // 映射的类型名称"properties": {  // 索引中文档的属性"字段名": {           // 属性名或字段名"type": "text"   // 属性值类型或字段类型,text表示文本,如商品标题"index": "analyzed",    // 索引类型"analyzer": "ik_smart"  // 设置使用的分词器[标准分词]},"字段名": {           // 属性名或字段名"type": "text"   // 属性值类型或字段类型,text表示文本,如商品标题"index": "analyzed",    // 索引类型"analyzer": "standard"  // 设置使用的分词器},"字段名": {           // 属性名或字段名"type": "text"   // 属性值类型或字段类型,text表示文本,如商品标题"index": "analyzed",    // 索引类型"analyzer": "standard"  // 设置使用的分词器}}}
}

kinana操作:

POST /indexes1/goods
{"mapping": {"properties": {"id": {"type": "long"},"name": {"type": "text","index": "analyzed","analyzer": "ik_max_word"},"price":{"type": "float"},"created_time":{"type": "date","format":"yyyy-MM-dd HH:mm:ss"}}}
}
数据类型[了解]

elasticsearch中支持的常见字段数据类型:

类型描述
text字符串类型,可以模糊查询, 可以分词查询,不能聚合、排序
keyword字符串类型,只能精准查询, 不能分词查询,可以聚合、排序
long有符号的64位整数, 范围:[−263 ~ 263-1]
Integer有符号的32位整数, 范围: [−231 ~ 231-1]
short有符号的16位整数, 范围: [-32768 ~ 32767]
byte有符号的8位整数, 范围: [-128 ~ 127]
float32位单精度浮点数
double64位双精度浮点数
boolean布尔类型,支持使用字符串,数字等零值表示true/false
date日期类型,
date_nanos日期纳秒类型,
binary二进制类型,Base64编码字符串的二进制值
Range范围类型,有integer_range, float_range, long_range, double_range, date_range等
array数组类型,ES中没有专门的数组类型, 直接使用[ ]定义即可,所有的成员的值必须是同一种数据类型
object对象类型,以json对象为结构

使用默认类型_doc代替映射的创建,es会内部自动推断字段类型。

PUT /indexes2/_doc/文档ID
{"name": "商品的标题","price": 18,"created_time": "2022-01-10 22:00:31"
}

_doc 就是默认类型(default type),type在8.x版本会被彻底删除,以后使用默认类型_doc替代即可。

查看索引
GET /_cat/indices      # 查看所有的索引信息
GET /索引名称           # 查看指定名称的索引信息
删除索引
DELETE /索引名称
文档操作
请求方法/methoduri地址描述
PUT(创建,修改)/索引名称/_doc/文档id创建文档(指定文档id)
POST(创建)/索引名称/_doc/文档id创建文档,如果uri地址只是以_doc结尾,文档id是随机生成的)
POST(修改)/索引名称/_doc/文档id/_update修改文档
DELETE(删除)/索引名称/_doc/文档id删除文档
GET(查询)/索引名称/_doc/文档id查询文档通过文档ID
POST(查询)/索引名称/_doc/文档id/_search查询所有数据
添加文档
POST /索引名称/_doc
{"id": 1,"name": "华为手机","category": "华为","cover": "1.png","price": "3999.00"
}
修改文档
POST /索引名称/_doc/1
{"name": "华为手机mate40","price": "4999.00"
}
删除文档
DELETE /索引名称/_doc/1
查询文档

查询文档有三种方式:

  • 主键查询:根据文档id查询
  • 精确查询:根据关键词查询,也叫term查询 浪潮之巅 -> 浪潮之巅
  • 匹配查询:根据输入的内容先对内容进行分词,再进行分词匹配查询 浪潮 -> 浪潮之巅
准备数据
POST /indexes4/_doc/1
{"created_time":"2022-04-01","title":"浪潮之巅","content":"一部IT人非读不可,而非IT人也应该阅读的作品,讲故事的经典作品","author_id": 119
}POST /indexes4/_doc/2
{"post_date":"2022-03-12","title":"人月神话","content":"一部IT人非读不可,而非IT人也应该阅读的作品,讲人与团队关系作品","author_id": 120
}POST /indexes4/_doc/3
{"post_date":"2021-12-16","title":"代码之髓","content":"小日子过得不错的人写的作品,对代码中各种语言结构的实现进行揭秘","author_id": 110
}
主键查询
# GET /索引名称/_doc/1
GET /indexes4/_doc/3
精确查询
POST /索引名称/_search{"query": {"term": {"字段名": {"value": "字段值"},"字段名": {"value": "字段值"}}}
}# 如果是text格式,无法精确查询的,只能匹配查询

kibana操作:

POST /indexes4/_search
{"query": {"term": {"author_id": {"value": 119}}}
}
匹配查询

查询所有

POST /索引名称/_search
{"query": {"match_all": {}},"sort": [  # 排序,注意:text无法使用排序,keyword才支持# {"字段名":"排序规则,asc正序, desc倒序"}{"title": "asc" }],"from": 0,                       # 分页,查询起始下标"size": 2,                       # 指定返回结果数量"_source": ["title", "content"]  # 指定只返回部分字段
}

kibana操作:

POST /indexes4/_search
{"query": {"match_all": {}},"sort": {"author_id": "desc"},"from": 0,"size": 4,"_source": ["title"]
}

条件查询

格式:

POST /索引名称/_search
{"query": {"match": {"字段名": "查询条件值"}}
}
POST /indexes4/_search
{"query": {"match": {"content": "非读不可"}}
}

若有错误与不足请指出,关注DPT一起进步吧!!!

相关文章:

Elasticsearch快速入门

文章目录 Elasticsearch快速入门核心概念倒排索引基本使用索引操作创建索引类型映射[了解]数据类型[了解] 查看索引删除索引 文档操作添加文档修改文档删除文档查询文档准备数据主键查询精确查询匹配查询 Elasticsearch快速入门 核心概念 Elasticsearch是面向文档的&#xff…...

uniapp微信小程序遮罩层u-popup禁止底层穿透

添加 touchmove.prevent&#xff0c;遮罩层底部的页面就不会滑动了微信开发者工具不生效&#xff0c;真机生效 <u-popup :show"showEwm" close"closeEwm" mode"center" touchmove.prevent><view class"ewmshow"></vie…...

【RocketMQ】秒杀设计与实现

&#x1f3af; 导读&#xff1a;本文档详细探讨了高并发场景下的秒杀系统设计与优化策略&#xff0c;特别是如何在短时间内处理大量请求。文档分析了系统性能指标如QPS&#xff08;每秒查询率&#xff09;和TPS&#xff08;每秒事务数&#xff09;&#xff0c;并通过实例讲解了…...

高级架构师面试题

一、技术深度方面 微服务架构的核心概念和优势&#xff1a; • 核心概念&#xff1a;将一个大型的应用拆分为多个小型的、独立部署的服务&#xff0c;每个服务都围绕着特定的业务功能进行构建&#xff0c;服务之间通过轻量级的通信机制进行交互。 • 优势&#xff1a; • 独…...

phpstudy简易使用

注意&#xff0c;本文所述的操作步骤均建立在电脑上已经完成php环境变量的配置与vscode的安装之上 、...

ubuntu server 常用配置

这里写目录标题 0001 虚拟机静态IP0002 vim tab 4个空格0003 设置时区0004 网络端口查看端口开放端口 0005 修噶机主机名 0001 虚拟机静态IP win网络链接&#xff0c;IP地址&#xff1a;192.168.220.1 - NAT网关&#xff1a;192.168.220.2 - ubuntu静态IP设置&#xff1a; ca…...

[Day 82] 區塊鏈與人工智能的聯動應用:理論、技術與實踐

AI在風險控制中的應用案例 風險控制是企業管理中至關重要的一環&#xff0c;AI技術的引入為風險控制帶來了前所未有的自動化和智能化。無論是在金融、保險、製造業&#xff0c;還是網絡安全中&#xff0c;AI都能有效地分析和預測潛在風險。本文將探討AI在風險控制中的應用&…...

微信小程序map组件自定义气泡真机不显示

最近遇到一个需求需要使用uniapp的map自定义气泡 &#xff0c;做完之后发现在模拟器上好好的&#xff0c;ios真机不显示&#xff0c;安卓页数时好时不好的 一番查询发现是小程序的老问题了&#xff0c;网上的方法都试了也没能解决 后来看到有人说用nvue可以正常显示&#xff0c…...

数据结构之链表(2),双向链表

目录 前言 一、链表的分类详细 二、双向链表 三、双向链表的实现 四、List.c文件的完整代码 五、使用演示 总结 前言 接着上一篇单链表来详细说说链表中什么是带头和不带头&#xff0c;“哨兵位”是什么&#xff0c;什么是单向什么是双向&#xff0c;什么是循环和不循环。然后实…...

STL之list篇(下)(从底层分析实现list容器,逐步剥开list的外表)

文章目录 前言一、list的数据结构和类实现需求1.1 数据结构1.2 list类实现需求 二、list迭代器的实现2.1 为什么list不能直接把迭代器当作指针一样使用&#xff1f;2.2 list迭代器的框架设计2.3 *和-> 操作符的重载2.4 和-- 操作符的重载2.5 !和 操作符的重载 三、 list的函…...

视频去水印的3个技巧,教你无痕去水印

许多视频平台为了推广自身品牌或者广告用途&#xff0c;会在视频上添加水印。这些水印不仅影响了视频的美观&#xff0c;还可能限制了内容的传播范围。幸运的是&#xff0c;有几种简单而有效的方法可以帮助我们去除视频中的水印&#xff0c;同时保持视频的原始画质和观感。以下…...

LSTM模型改进实现多步预测未来30天销售额

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有&#xff1a;中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等&#xff0c;曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝&#xff0c;拥有2篇国家级人工智能发明专利。 社区特色…...

八LAMP搭建

# LAMP ## 一、知识回顾 ### FTP samba nfs 特点 - 借用Linux用户作为映射用户&#xff0c;进行权限管理 - 软件本身还有管理控制权限 #### 客户端连接到服务器后进行读写执行等操作 &#xff0c;必须同时具有: - 软件许可的权限 vsftpd: anon upload enableYES - 文件…...

Windows——解除Windows系统中文件名和目录路径的最大长度限制

第一步&#xff1a;打开本地组策略编辑器 按下Win R键打开运行窗口&#xff0c;输入 gpedit.msc 并回车&#xff0c;打开本地组策略编辑器。 第二步&#xff1a;开启 长路径设置 第三步&#xff1a;重启计算机...

黑名单与ip禁令是同一个东西吗

黑名单和IP禁令相关&#xff0c;但它们并不是完全相同的概念。以下是它们之间的区别&#xff1a; 黑名单 定义&#xff1a;黑名单通常是一个包含不允许或被禁止的用户、IP地址、域名或其他实体的列表。用途&#xff1a;用于阻止特定用户或实体访问某个系统或服务。黑名单可以…...

FuTalk设计周刊-Vol.075

国庆75周年&#xff0c;也是第75期周刊&#xff5e; 祝大家国庆快乐&#xff5e;&#xff01; #AI漫谈 热点捕手 1.万字深剖&#xff01;13位AI巨擘联袂&#xff0c;1.6万字解码生成式AI产品「全攻略」 “生成式人工智能产品”主题论坛&#xff0c;邀请到了来自腾讯、商汤科…...

PE节表中是否存在misc.VirtualSize 比SizeofRawData还要大的情况

确实是存在的,这是win10自带记事本,可以看到 确实是大.所以在申请imagebuffer的时候,还是需要比较大小.但是在还原的时候.只考虑sizeofRawData即可>...

栈及笔试题

目录 栈的实现 1、数组栈 2、链式栈 栈的创建 栈的打印 内存泄漏 栈溢出 练习 有效的括号 栈的实现 栈后入先出 1、数组栈 &#xff08;最佳实现&#xff0c;且访问数据的时候CPU告诉访存命中率比较高&#xff0c;因为地址连续存放&#xff0c;访问时CPU从cache里一…...

【工程测试技术】第3章 测试装置的基本特性,静态特性和动态特性,一阶二阶系统的特性,负载效应,抗干扰性

目录 3.1 概述 1测量装置的静态特性 2.标准和标准传递 3.测量装置的动态特性 4.测量装置的负载特性 5.测量装置的抗干扰性 1.线性度 2.灵敏度 3.回程误差 4.分辨力 5.零点漂移和灵敏度漂移 3.3.1 动态特性的数学描述 1.传递函数 2.频率响应函数 3.脉冲响应函数 …...

ireport 5.1 中文生辟字显示不出来,生成PDF报字体找不到

ireport生成pdf里文字不显示。本文以宋体中文字不显示为例。 问题&#xff1a;由浅入深一步一步分析 问题1、预览正常&#xff0c;但生成pdf中文不显示 报告模板编辑后&#xff0c;预览正常&#xff0c;但生成pdf中文不显示。以下是试验过程&#xff1a; 先编辑好一个报告单模…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...