Elasticsearch 入门

Elasticsearch安装

下载软件

        Elasticsearch 的官方地址:Elastic — 搜索 AI 公司 | Elastic

        Elasticsearch 最新的版本是 8.16.1(截止2024.11),我们选择7.8.0版本。

        下载地址:Elasticsearch 7.8.0 | Elastic

        Elasticsearch 分为Linux和 Windows版本,基于我目前主要学习的是Elasticsearch的 Java客户端的使用,所以使用的是安装较为简便的 Windows 版本。

        解压安装包后显示如下内容

目录含义
bin可执行脚本目录
config配置目录
jdk内置 JDK 目求
lib类库
logs日志目录
modules模块目录
plugins插件目录

        bin目录下双击elasticsearch.bat启动elasticsearch显示黑色窗口

注意:9300 端口为 Elasticsearch 集群间组件的通信端口,9200 端口为浏览器访问的 http协议 RESTful 端口。

        打开浏览器,访问localhost:9200,测试结果

 问题解决

  • Elasticsearch 是使用java开发的,且 7.8版本的ES 需要JDK版本 1.8以上,默认安装包带有jdk环境,如果系统配置 JAVA HOME,那么使用系统默认的JDK,如果没有配置使用自带的 JDK,一般建议使用系统配置的 JDK。
  • 双击启动窗口闪退,通过路径访问追踪错误,如果是“空间不足”,请修改config/ivm.options 配置文件
    #设置 JVM 初始内存为1G。此值可以设置与-Xmx 相同,以避免每次垃圾回收完成后JVM 重新分配内存
    Xms represents the initial size of total heap space
    #设置 JVM 最大可用内存为1G
    Xmx represents the maximum size of total heap space
    -Xmslg
    -Xmxlg

Elasticsearch 基本操作 

 Postman 

        如果直接通过浏览器向 Elasticsearch服务器发请求,那么需要在发送的请求中包含HTTP 标准的方法,而 HTTP 的大部分特性且仅支持 GET和POST 方法。所以为了能方便地进行客户端的访问,可以使用 Postman 软件

        Postman 是一款强大的网页调试工具,提供功能强大的 WebAPI 和 HTTP 请求调试。软件功能强大,界面简洁明晰、操作方便快捷,设计得很人性化。Postman 中文版能够发送任何类型的 HTTP 请求(GET,HEAD,POST,PUT.),不仅能够表单提交,且可以附带任意类型请求体。 

        Postman 官网::Postman: The World's Leading API Platform | Sign Up for Free

        下载地址:Download Postman | Get Started for Free

数据格式

        Elasticsearch 是面向文档型数据库,一条数据在这里就是一个文档。为了方便大家理解,我们将 Elasticsearch 里存储文档数据和关系型数据库 MySQL,存储数据的概念进行一个类比 

ElasticsearchIndex(索引)Types(类型)Documents(文档)Fields(字段)
MySQLDatabases(数据库)Table(表)Row(行)Column(列)

        ES 里的Index可以看做一个库,而 Types 相当于表,Documents 则相当于表的行。这里 Types 的概念已经被逐渐弱化,Elasticsearch6.X中,一个index下已经只能包含一个type,Elasticsearch7.X中,Type 的概念已经被删除了。

倒排索引:倒排表以字或词为关键字进行索引,表中关键字所对应的记录表项记录了出现这个字或词的所有文档,一个表项就是一个字表段,它记录该文档的ID和字符在该文档中出现的位置情况。

正排(正向)索引:正排表是以文档的ID为关键字,表中记录文档中每个字的位置信息,查找时扫描表中每个文档中字的信息直到找出所有包含查询关键字的文档。

索引操作

  • 创建索引

        对比关系型数据库,创建索引就等同于创建数据库
        在 Postman 中,向ES 服务器发 PUT请求 :http://127.0.0.1:9200/shopping(HTTP协议中,PUT请求方法用于向服务器上传新的资源或更新已有资源。PUT请求会将请求的主体部分存储在服务器上指定的URL处,如果URL不存在,则会创建新的资源;如果URL已经存在,则会使用请求的主体部分替换原有资源。)
        PUT请求是具有幂等性的,即对于同一个URL的多个PUT请求,服务器处理的结果应该是一致的,不会因为请求的次数不同而导致资源状态的改变。

  • 索引查询

         在 Postman 中,向ES 服务器发 GET请求 :http://127.0.0.1:9200/shopping(向指定的资源发出请求,请求参数以查询字符串的形式发送到服务器。由于请求参数以查询字符串的形式附加在 URL 上,因此传输数据量受到 URL 长度的限制,通常不能超过 2048 个字。由于请求参数暴露在 URL 中,可能会被保存在日志、浏览器历史记录等地方,因此在涉及敏感数据传输时需要注意安全性。由于 GET 请求不会对服务器端数据做出任何修改,因此可以无限次重复请求而不会对服务器产生影响。)

  • 索引删除

        在 Postman 中,向ES 服务器发 DELETE请求 :http://127.0.0.1:9200/shopping(DELETE请求用于删除资源,删除指定的资源。DELETE请求是幂等的:即无论对同一个资源发送多少次DELETE请求,结果都是一样的,资源被删除。DELETE请求是安全的:DELETE请求只是删除指定的资源,并不会对服务器上的其他资源产生影响。)

文档操作

  • 创建文档

        索引已经创建好了,接下来我们来创建文档,并添加数据。这里的文档可以类比为关系型数据库中的表数据,添加的数据格式为JSON格式在 Postan 中

        向ES 服务器发 POST请求 :http://127.0.0.1:9200/shoppinng/_doc(向指定的资源提交数据进行处理请求(例如提交表单或上传文件),请求参数保存在请求体中。由于请求参数保存在请求体中,因此理论上不受数据大小限制。但是在实际应用中,服务器通常会限制 POST 请求的数据大小。由于请求参数保存在请求体中,相对于 GET 请求,POST 请求传输的数据更加安全由于 POST 请求可能会对服务器端数据进行修改,因此不能无限次重复请求,否则可能会对服务器产生负面影响。)

        请求体内容为:

{"title":"小米手机","category":"小米","images":"http://www.gulixueyuan.com/xm.jpg","price":3999.00
}

  •  主键查询

        在 Postman 中,向ES 服务器发 GET请求 :http://127.0.0.1:9200/shopping/_doc/主键

  • 全量查询

         在 Postman 中,向ES 服务器发 GET请求 :http://127.0.0.1:9200/shopping/_search

  • 全量修改

         在 Postman 中,向ES 服务器发 PUT请求 :http://127.0.0.1:9200/shopping/_doc/主键(将修改部分添加到请求体Body)

  • 局部修改

         向ES 服务器发 POST请求 :http://127.0.0.1:9200/shoppinng/_update/主键(将修改部分添加到请求体Body)

  • 文档删除

        向ES 服务器发 DELETE请求 :http://127.0.0.1:9200/shoppinng/_doc/主键

  • 条件查询

         向ES 服务器发 GET请求 :http://127.0.0.1:9200/shoppinng/_search?q=查询条件

        向ES 服务器发POST请求 :http://127.0.0.1:9200/shoppinng/_search在请求体中添加查询条件

{"query" : {"match" : {"category" : "小米"}}
}

  • 分页查询

        向ES 服务器发POST请求 :http://127.0.0.1:9200/shoppinng/_search在请求体中添加查询条件

{"query" : {"match_all" : {}},
#从第几个开始"from" : 0,
#每一页查几个"size" : 1
}

  • 查询排序

        向ES 服务器发POST请求 :http://127.0.0.1:9200/shoppinng/_search在请求体中添加查询条件

{"query" : {"match_all" : {}},
#从第几个开始"from" : 0,
#每一页查几个"size" : 1
#筛选查询,只查询选定字段"_source" : ["title"],
#排序"sort" : {
#以哪个字段排序"price" : {
#升序降序"order" : "desc"}}
}

  • 多条件查询

        向ES 服务器发POST请求 :http://127.0.0.1:9200/shoppinng/_search在请求体中添加查询条件

{"query" : {#表示条件查询的意思"bool" : {#表示多个条件同时成立,[]表示集合"must" : [{"match" : {"category" : "小米"}},
{"match" : {"price" : "小米"}}]}}}
{"query" : {"bool" : {"should" : [{"match" : {"category" : "小米"}},{"match" : {"category" : "华为"}}]}}}

  • 范围查询

        向ES 服务器发POST请求 :http://127.0.0.1:9200/shoppinng/_search在请求体中添加查询条件

{"query" : {"bool" : {"should" : [{"match" : {"category" : "小米"}},{"match" : {"category" : "华为"}}],#过滤"filter" :  {#以那个字段过滤"range" : {"price" :{#大于"gt" : 5000}}}}}}

  • 完全匹配&高亮查询

         向ES 服务器发POST请求 :http://127.0.0.1:9200/shoppinng/_search在请求体中添加查询条件

{"query" : {#完全匹配"match_phrase" : {"category" : "小米"}},#高亮显示"highlight" : {#多字段域,固定写法,指定那些字段高亮"fields" : {"category" : {}}}
}

  • 聚合查询

        向ES 服务器发POST请求 :http://127.0.0.1:9200/shoppinng/_search在请求体中添加查询条件

{#聚合操作"aggs" : {#名称随意取"price_group" : {#分组"terms" : {#分组字段"field" : "price"}}},#不用原始数据"size" : 0
}

  • 映射关系

向ES 服务器发put请求 :http://127.0.0.1:9200/user/_mapping

{"properties" : {"name" : {#当一个字段需要用于全文搜索(会被分词), 比如产品名称、产品描述信息, 就应该使用text类型."type" : "text",#如果这个字段index设置为true,那么我们搜索的时候搜索'es'也可以搜索到这个字段所在的文档"index": true},"sex" : {# 当一个字段需要按照精确值进行过滤、排序、聚合等操作时, 就应该使用keyword类型."type" : "keyword","index" :true},"tel" : {"type" :"keyword",#如果这个字段index设置为false,那么我们搜索的时候搜索'es'不可以搜索到这个字段所在的文档"index": false}}
}

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

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

相关文章

Pyside6-QTableView实战

使用效果 代码 import cv2 import osfrom ui.imageQuery import Ui_DialogImageQuery from utils.log_util import log_message from utils.sys_util import create_dirfrom PySide6.QtWidgets import QApplication, QDialog, QGraphicsPixmapItem, QGraphicsScene from PySid…

Redis开发03:常见的Redis命令

1.输入以下命令,启动redis。 sudo service redis-server start 如果你是直接安装在WSL的,搜索栏搜索Ubuntu或者点击左下角Windows图表找到U那一栏,直接打开Ubentu,输入账密后,输入“sudo service redis-server start”…

JAVA |日常开发中常见问题归纳讲解

JAVA |日常开发中常见问题归纳讲解 前言一、语法错误相关问题1.1 分号缺失或多余1.2 括号不匹配1.3 变量未定义或重复定义 二、数据类型相关问题2.1 数据类型不匹配2.2 整数溢出和浮点数精度问题 三、面向对象编程相关问题3.1 空指针异常(NullPointerExc…

ubuntu的用户使用

ubuntu系统中的常规用户登录方式 在系统root用户是无法直接登录的,因为root用户的权限过大所以其安全性比较差 在登录系统时一般使用在安装系统时建立的普通用户登录 如果需要超级用户权限: Ubuntu用户密码破解 在系统安装完成后默认grub启动等待时间为0,建议改…

初始Python篇(6)—— 字符串

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: Python 目录 字符串的常见操作 格式化字符串 占位符 f-string 字符串的 format 方法 字符串的编码与解码 与数据验证相关的方法 …

38 基于单片机的宠物喂食(ESP8266、红外、电机)

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STC89C52单片机,采用L298N驱动连接P2.3和P2.4口进行电机驱动, 然后串口连接P3.0和P3.1模拟ESP8266, 红外传感器连接ADC0832数模转换器连接单片机的P1.0~P1.…

GEE Landsat 8 可见光影像校正后下载

在遥感影像处理领域,Landsat 8 数据因其 30 米空间分辨率 和 多光谱波段 被广泛应用。处理这些数据时,研究者常常需要对数据进行裁剪、计算指数、图像增强等操作,以满足特定研究需求。 本文将介绍一个 Python 自动化脚本,使用 Goo…

Matlab Simulink HDL Coder开发流程(一)— 创建HDL兼容的Simulink模型

创建HDL兼容的Simulink模型 一、使用Balnk DUT模板二、从HDL Coder库中选择模块三、为DUT开发算法/功能四、为设计创建Testbench五、仿真验证设计功能六、Simulink模型生成HDL代码 这个例子说明了如何创建一个用于生成HDL代码的Simulink模型。要创建兼容HDL代码生成的MATLAB算法…

如何通过 JWT 来解决登录认证问题

1. 问题引入 在登录功能的实现中 传统思路: 登录页面时把用户名和密码提交给服务器服务器验证用户名和密码,并把检验结果返回给后端如果密码正确,则在服务器端创建 session,通过 cookie 把 session id 返回给浏览器 但是正常情…

像素流送api ue多人访问需要什么显卡服务器

关于像素流送UE推流,在之前的文章里其实小芹和大家聊过很多,不过今天偶然搜索发现还是有很多小伙伴,在搜索像素流送相关的问题,搜索引擎给的提示有这些。当然这些都是比较短的词汇,可能每个人真正遇到的问题和想获取的…

Uniad复现学习

在优云平台部署训练,加速训练。 关于UCloud(优刻得)旗下的compshare算力共享平台 UCloud(优刻得)是中国知名的中立云计算服务商,科创板上市,中国云计算第一股。 UCloud(优刻得)旗下的Compshare算力共享平台具有以下优点…

域名解析系统 DNS

1.域名系统概述 用户与互联网上某台主机通信时,必须要知道对方的IP地址。然而用户很难记住长达32 位的二进制主机地址。即使是点分十进制地址也并不太容易记忆。但在应用层为了便于用户记忆各种网络应用,连接在互联网上的主机不仅有P地址,而…

【软考网工笔记】网络基础理论——网络层

文章目录 中断处理过程数据包组装RIPRSVPipv4RIPv1 & RIPv2HFC 混合光纤同轴电缆(Hybrid Fiber Coax,简称HFC)BGP (边界网关协议)BGP-4 协议的四种报文ICMP 协议数字语音电子邮件协议MPLS 多协议标记交换ipv6DHCPDNS名称解析过程查询顺序…

go语言 Pool实现资源池管理数据库连接资源或其他常用需要共享的资源

go Pool Pool用于展示如何使用有缓冲的通道实现资源池,来管理可以在任意数量的goroutine之间共享及独立使用的资源。这种模式在需要共享一组静态资源的情况(如共享数据库连接或者内存缓冲区)下非 常有用。如果goroutine需要从池里得到这些资…

【Delphi】modbus-TCP 协议库

在日常开发中,也会遇到使用modbus的部件,比如温度控制器、读卡器等等,那么使用Delphi开发,也就必须遵守modbus-TCP协议,如果自己使用TCP控件写也没有问题,不过如果有开源的三方库,别人已经调试过…

【Git 操作】-- 将 fork master 分支的最新commit更新到自己的仓库

目录 1.举例 2. 配置上游仓库(Upstream) 3. 获取上游仓库的更新 4. 切换到你自己的 master 分支 5. 合并上游仓库的 master 分支 6. 解决冲突(如果有的话) 7. 推送更新到你自己的 GitHub 仓库 1.举例 当我们从 github 的 h…

Facebook的开源项目解析:推动开发者社区的技术进步

Facebook,作为全球领先的社交平台之一,其在技术领域的创新不仅体现在产品功能的实现上,也积极推动开源社区的发展。开源项目已经成为Facebook技术战略的重要组成部分,通过开源,Facebook不仅加速了技术进步,…

荣耀300系列革新发布:科技与美学的里程碑之作

2024年12月2日,全新一代荣耀300系列正式发布,新潮的环球旅拍发布会不仅展现了荣耀追求极致的创新理念,也标志着数字系列迎来科技体验以及美学设计的巨大升级。凭借荣耀领先行业的AI能力以及对底层科技创新的强大驱动,全新荣耀300系…

centos 7 离线安装postgis插件

前一段时间记录了下如何在centos7中离线安装postgresql,因为工作需要,我不仅要安装postgresql,还需要安装postgis插件,这篇文章记录下postgis插件的安装过程。 1. 安装前的参考 如下的链接都是官网上的链接,对你安装p…

ChatGPT/AI辅助网络安全运营之-数据解压缩

在网络安全的世界中,经常会遇到各种压缩的数据,比如zip压缩,比如bzip2压缩,gzip压缩,xz压缩,7z压缩等。网络安全运营中需要对这些不同的压缩数据进行解压缩,解读其本意,本文将探索一…