ElasticSearch安装、启动、操作及概念简介

news2024/11/16 21:41:26

ElasticSearch快速入门

文件链接:https://pan.baidu.com/s/15kJtcHY-RAY3wzpJZIn4-w?pwd=0k5a
提取码:0k5a

有些软件对于安装路径有一定的要求,例如:路径中不能有空格,不能有中文,不能有特殊符号,等等。

为了避免不必要的麻烦,也懒得一一辨别踩坑,我们人为作出「统一的约定」:

  • 解压版的软件,一律安装在没中文、没空格的路径~~~

Elasticsearch 只有解压版本,没有安装版

Elastic 官网:https://www.elastic.co/cn/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4gxmBIBC-1681373353914)(assets\image-20210607091331235.png)]

Elastic 有一条完整的产品线及解决方案:Elasticsearch、Kibana、Logstash 等,前面说的三个就是大家常说的 ELK 技术栈。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RTFB9lKV-1681373353915)(assets\image-20210607091413787.png)]

Elasticsearch 具备以下特点:

  • 分布式,无需人工搭建集群(solr 就需要人为配置,使用 Zookeeper 作为注册中心);
  • Restful 风格,一切 API 都遵循 Restful 原则,容易上手;
  • 近实时搜索,数据更新在 Elasticsearch 中几乎是完全同步的。

kibana 从 7.11 开始升级了 node.js 的版本,因此,从这个版本开始不再支持 win7,也就是说,win7 能使用的 kibana 的最后的版本是 7.10.2

1. 安装 Elasticsearch

文件链接:https://pan.baidu.com/s/15kJtcHY-RAY3wzpJZIn4-w?pwd=0k5a
提取码:0k5a

1.1 下载解压

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2YasHqgW-1681373353916)(assets/1675039188878.jpg)]

1.2 配置

本步骤是可选操作:如果机子内存足够大也可以不改配置

我们进入 elasticsearch-7.11.1/config 目录:

需要修改的配置文件有两个:

  • elasticsearch.yml
  • jvm.options

1.2.1 jvm.options

Elasticsearch 基于 Lucene 的,而 Lucene 底层是 java 实现,若本机内存不够需要配置 jvm 参数。

在jvm.options.d文件下创建配置文件(文件后缀是options即可)例如heap.options

  • 内存占用太多了,我们调小一些:

    -Xms512m
    -Xmx512m
    

1.2.2 elasticsearch.yml

elasticsearch.yml 配置文件暂时不用改动。

1.3 运行

进入 elasticsearch-7.11.1\bin 目录

双击 elasticsearch.bat,启动成功时(启动失败可以从下面的文章链接去解决问题),会显示 started 字样,并且可我们在浏览器中访问:http://127.0.0.1:9200,可见类似如下内容:

{
  "name" : "DESKTOP-T540P",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "XvelzExUQgud2iqO9QLA4w",
  "version" : {
    "number" : "7.11.1",
    "build_flavor" : "default",
    "build_type" : "zip",
    "build_hash" : "747e1cc71def077253878a59143c1f785afa92b9",
    "build_date" : "2021-01-13T00:42:12.435326Z",
    "build_snapshot" : false,
    "lucene_version" : "8.7.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

启动如果出现闪退,您可以看这篇文章解决elasticsearch.bat启动闪退的详细解决方案
在这里插入图片描述

2. elasicsearch 概念

2.1数据分类和查询方式

我们生活中的数据总体分为两种:

#数据类型说明
1结构化数据指具有固定格式或有限长度的数据,如数据库,元数据等。
2非结构化数据指不定长或无固定格式的数据,如邮件,word文档等磁盘上的文件
  • 结构化数据的查询方式

最常见的结构化数据也就是数据库中的数据。

结构化数据很容易查询,因为结构化的数据存储是有规律的。以数据库数据为例,它们有行,有列,有格式/类型,连数据的长度都是固定的。

非结构化数据的查询方式

  • 顺序扫描法(Serial Scanning)

    想象一下你在 Word 文档中使用 Ctrl + f 进行搜索。

    所谓顺序扫描,比如要找内容包含某一个字符串的文件,就是一个文档一个文档的看,对于每一个文档,从头看到尾,如果此文档包含此字符串,则此文档为我们要找的文件,接着看下一个文件,直到扫描完所有的文件。

    这个过程是相当慢的。

  • 全文检索(Full-text Search)

    将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。这部分从非结构化数据中提取出的然后重新组织的信息,我们称之索引

    从非结构化数据中提取出来的信息,通常也就是你所关注的核心信息,或者是搜索关键字。

    例如:字典。字典有两套索引:拼音表和部首检字表。拼音表就是提取的各个文字的读音信息而组成的索引;部首检字表就是提取的各个文字的偏旁部首信息而组成的索引。

    Note:一份非结构化数据,可以不止有一份索引。
    

    这种先建立索引,再对索引进行搜索的过程就叫全文检索(全文检索通常使用倒排索引来实现)(Full-text Search)。

    正排索引和倒排索引区别

    正排索引:由key查询实体的过程,使用正排索引

    倒排索引:与正排索引相反,由item查询key的过程,使用倒排索引

    举个例子

    举个例子,假设有3个网页:
    url1 -> “我爱南京”
    url2 -> “我爱到家”
    url3 -> “到家美好”
    这是一个正排索引:
    Map结构如下
    分词之后:
    url1 -> {我,爱,南京}
    url2 -> {我,爱,到家}
    url3 -> {到家,美好}
    这是一个分词后的正排索引:
    
    分词后倒排索引:
    Map结构如下
    我 -> {url1, url2}
    爱 -> {url1, url2}
    南京 -> {url1}
    到家 -> {url2, url3}
    美好 -> {url3}
    由检索词item快速找到包含这个查询词的网页Map就是倒排索引
    

    虽然创建索引的过程也是非常耗时的,但是索引一旦创建就可以多次使用,全文检索主要处理的是查询,所以耗时间创建索引是值得的。

2.2 全文检索

可以使用 Lucene 实现全文检索。Lucene 是 apache 下的一个开放源代码的全文检索引擎工具包。提供了完整的查询引擎和索引引擎,部分文本分析引擎。

Lucene 的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能。

Lucene 只是一个库(类似于汽车发动机),而非独立的产品。通过 Lucene 实现搜索功能,但你仍需作大量的其他的工作。Solr 和 ElasticSearch 都是基于 Lucene 的搜索引擎产品。

对于数据量大、数据结构不固定的数据可采用全文检索方式搜索,比如百度、Google 等搜索引擎、论坛站内搜索、电商网站站内搜索等

3. elasticsearch简介

Elasticsearch 是一个基于 Lucene 的搜索服务器,它采用 Java 语言编写,使用 Lucene 构建索引、提供搜索功能,并以 Apache 许可条款发布。

Elasticsearch 对外提供了 RESTful API ,以使你能通过多种形式操作它。

Elasticsearch 的优点

  • 分布式
  • 全文检索
  • 近实时搜索和分析
  • 高可用
  • RESTful API

3.1 核心概念

你完全可以将 Elasticsearch 当作一个数据库(NoSQL)来看待,以便于你的理解,也更方便与你通过现象看到它的本质。实际上在很多使用场景中,Elasticsearch 确实就是在扮演 NoSQL 数据库的角色。

类似于数据库的层次结构,Elastic Search 也是如此:

mysql               es
└── database        └── index
    └── table           └── type
        └── row             └── document
另外,在 SQL 数据库中被我们称作『列』的东西,实际上也被称作『字段』,只不过我们更习惯于使用前者。而 Elastic Search(和 Lucene)则是使用后一种称呼。

3.2 概念的弱化

虽然和 RDMS(关系型数据库) 中的概念有一一对应的关系,但是 Elasticsearch 正在一步步弱化 type 的概念,并计划在未来移除 type 这个概念。

这种情况下就类似于,数据库中人为约定:一个 database 里默认有且仅有一个 table 。此时,这个 table 叫什么,实际上就无关紧要了。即便是有这样的奇怪的约定,但是实际上仍不影响我们使用 MySQL,因为你仍然可以建多个 database 。

  • 6.0 的时候,已经默认只能支持一个索引中有且仅有一个 type 了;
  • 到了 7.0 的时候,如果你在命令中指定 type 时,Elasticsearch 会提示你 type 被废弃(deprecated),建议使用 _doc 关键字替代。
  • 更有甚至,很多原来需要填写 type-name 的地方,不仅仅是可以使用 _doc 替代,甚至连 _doc 都不用出现都是 ok 的。

3.3 es的restful风格api

Elastic Search 的一个特点就是对外提供 Restful API 来对其进行操作,因此,它直接利用 HTTP 的四种不同请求方式来表示当前操作是增删改查中的哪一种。

HTTP 请求方式操作
POST新增操作,类似于 INSERT
DELETE删除操作,类似于 DELETE
PUT修改操作,类似于 UPDATE
GET查询操作,类似于 SELECT

3.4 ES 中的数据类型

和数据库中的字段(列)有数据类型的概念一样,ElasticSearch 中 document 的每个『字段』也有数据类型的概念。ElasticSearch 支持的数据类型有:

  • 字符串型:text,keyword

    text 会被分词器分词;keyword 不会被分词器分词

  • 数字:long, integer, short, double, float

  • 日期:date

  • 逻辑:boolean

再复杂一些的数据类型有:

  • 对象类型:object
  • 数组类型:array
  • 地理位置:geo_point,geo_shape

3.5 其它

和数据库一样,Elastic Search 也有 集群、节点、分片、备份的概念。

另外,Elasticsearch 流行的原因之一就是其内置了集群功能,即它本身『天生』就是分布式的。即便你在单机上只有一个节点,Elasticsearch 也将它当做一个集群来看待。默认也会对你的数据进行分片和副本操作,当你向集群添加新数据时,数据也会在新加入的节点中进行平衡。

4. 对ElasticSearch 操作(Postman操作)

4.1 操作索引

4.1.1 创建索引

对比关系型数据库,创建索引就等于创建数据库。

在postman 中,向ES服务器发送PUT 请求:http://127.0.0.1:9200/shopping

4.1.2 查询索引

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

查看ES 中所有索引 ,向ES服务器发送GET请求:http://127.0.0.1:9200/_cat/indices?v

4.1.3 删除索引

向ES服务器发送DELETE 请求:

http://127.0.0.1:9200/shopping

4.2 操作文档

4.2.1 创建文档

在postman 中,向ES服务器发送POST 请求:

http://127.0.0.1:9200/shopping/_doc

请求体

{
"title":"小米手机",
"category":"小米",
"image":"http://127.0.0.1/9000/phone/1111.jpg",
"price":3333.00
    
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ldOhXM6r-1681373353917)(C:\Users\lps\AppData\Roaming\Typora\typora-user-images\image-20230413104118593.png)]

此时的请求会给这个文档自动生成一个id

指定id生成文档

向ES服务器发送PUT 请求:

http://127.0.0.1:9200/shopping/_doc/1001

请求体

{
"title":"小米手机1",
"category":"小米1",
"image":"http://127.0.0.1/9000/phone/1111.jpg",
"price":3333.00
    
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wlL9zNOn-1681373353918)(C:\Users\lps\AppData\Roaming\Typora\typora-user-images\image-20230413104347665.png)]

4.2.1 查看文档

向ES服务器发送GET 请求:

http://127.0.0.1:9200/shopping/_doc/1001

![)

向ES服务器发送GET 请求:

http://127.0.0.1:9200/shopping/_doc/1001/_source

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U5fOb8pC-1681373353919)(C:\Users\lps\AppData\Roaming\Typora\typora-user-images\image-20230413104534287.png)]

查询索引下所有文档数据,向ES服务器发送GET 请求:

http://127.0.0.1:9200/shopping/_doc/_search

在这里插入图片描述

4.2.3 删除索引

向ES服务器发送DELETE请求:

http://127.0.0.1:9200/shopping/_doc/6VB8eIcBrinsw-B-fqJ2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n5v1IWf7-1681373353919)(C:\Users\lps\AppData\Roaming\Typora\typora-user-images\image-20230413104912350.png)]

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JUC并发编程之ReentrantLock

1. 非公平锁实现原理 加锁解锁流程 构造器默认实现的是非公平锁 public ReentrantLock() {sync new NonfairSync();}NonfairSync 继承 Sync, Sync 继承 AbstractQueuedSynchronizer 没有竞争时 第一个竞争出现时 Thread-1 执行了 CAS 尝试将state 由 0 改为 1&…

Stable Diffusion免费(三个月)通过阿里云轻松部署服务

温馨提示:划重点,活动入口在这里喔,不要迷路了。 其实我就在AIGC_有没有一种可能,其实你早就在AIGC了?阿里云邀请你,体验一把AIGC级的毕加索、达芬奇、梵高等大师作画的快感。阿里云将提供免费云产品资源&…

如何使用evosuite为指定被测方法生成测试用例

目录 省流版本 准备工作 环境 evosuite获取 检验环境 参数解释 怎样表示被测方法 怎样指向被测类 其他参数 参考 省流版本 java -jar .\target\depd\evosuite-1.1.0.jar -generateTests -Dtarget_method"isLenient()Z" -class com.google.gson.stream.…

Midjourney教程(二)——Prompt基本结构

Midjourney教程——Prompt基本结构 Basic Prompt 基础版本的prompt仅仅包含图片的描述,能够满足普通的需求,如下图所示 Advanced Prompt 高级版本的prompt主要包含三个部分,如下图所示 Image Prompts(可选) prompt第一部分是Image&#x…

TCP/IP协议详解

一.引言TCP/IP 是 TCP 和 IP 两种协议群的统称,具体来说,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于 TCP/IP 协议二.计算机网络体系结构分层计算机网络体系结构分层计算机网络体系结构分层不难看出,TCP/IP 与 OSI 在分层模块…

【C语言】迷宫问题

【C语言】迷宫问题一. 题目描述二. 思想2.1 算法---回溯算法2.2 思路分析图解三. 代码实现3.1 二维数组的实现3.2 上下左右四个方向的判断3.4 用栈记录坐标的实现3.5 完整代码四. 总结一. 题目描述 牛客网链接:https://www.nowcoder.com/questionTerminal/cf2490605…

STM32看门狗

目录 独立看门狗 IWDG 什么是看门狗? 独立看门狗本质 独立看门狗框图 独立看门狗时钟 分频系数算法: ​编辑 重装载寄存器 键寄存器 溢出时间计算公式 独立看门狗实验 需求: 硬件接线: 溢出时间计算&#xff1…

macOS设置环境变量和别名

因为我的mac所用shell是bash,所以本文中涉及的环境变量和别名配置均在~/.zshrc文件中,且在每次配置完成后,需要执行source ~/.zshrc命令使配置文件生效 环境变量 通过配置环境变量,我们可以将某个路径暴露到全局,这样可以在全局…

周总结(第一周)

3月份3个星期 *** 三个星代表不会 ** 再做 * 加强 题目1-完全二叉树(记忆) 考察数据结构 完全二叉树的深度deplog2(N1)1 完全二叉树节点的深度depiceil(log2(i1))向上舍入 完全二叉树的层次遍历,遍历每层的二叉树计算基础每层的总和,然后找出最大的和…

Talk预告 | 新加坡国立大学郑奘巍 AAAI‘23 杰出论文:大批量学习算法加速推荐系统训练

本期为TechBeat人工智能社区第486期线上Talk! 北京时间3月30日(周四)20:00,新加坡国立大学二年级博士生——郑奘巍的Talk将准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “大批量学习算法加速推荐系统训练”,届时将分…

Kubernetes 多集群网络方案系列 2 -- Submariner 监控

Submariner 是一个用于连接 Kubernetes 集群的跨集群网络解决方案,可以实现集群之间的服务发现、网络通信等功能。 Prometheus 是一个开源的监控和告警系统,专门用于收集、存储和查询各种应用、系统和基础设施的实时指标数据。Prometheus 具备多维数据模…

Java开发 - MySQL主从复制初体验

前言 前面已经学到了很多知识,大部分也都是偏向于应用方面,在应用实战这条路上,博主一直觉得只有实战才是学习中最快的方式。今天带来主从复制给大家,在刚刚开始动手写的时候,才想到似乎忽略了一些重要的东西&#xf…

面试篇-揭开Spring Bean加载的神秘面纱

SpringBean加载完整过程 启动spring容器(创建beanfactory)->加载配置(注解、xml)->实例化bean(执行构造方法)->注入依赖->初始化bean(设置属性值)->使用->销毁 解析和读取 XML 配置文件或注解配置类&#xff0…

Linux嵌入式学习之Ubuntu入门(五)汇编语法学习

系列文章目录 一、Linux嵌入式学习之Ubuntu入门(一)基本命令、软件安装及文件结构 二、Linux嵌入式学习之Ubuntu入门(二)磁盘文件介绍及分区、格式化等 三、Linux嵌入式学习之Ubuntu入门(三)用户、用户组…

synchronized原理、偏向锁、轻量级锁、重量级锁、锁升级

文章目录Synchronized概念自增自减字节码指令临界区竞态条件基本使用原理查看synchronized的字节码指令序列Monitor对象的内存布局Mark Word是如何记录锁状态的偏向锁什么是偏向锁偏向锁延迟偏向偏向锁状态跟踪偏向锁撤销之调用对象HashCode偏向锁撤销之调用wait/notify轻量级锁…

Qt Quick - Drawer

Qt Quick - Drawer使用总结一、概述二、使用1、基础使用2、特点空间运行3、与内容转换相互挤占一、概述 Drawer提供了一个基于滑动的侧边面板,类似于经常在触控界面中使用的侧边面板,为导航提供了一个位置。 二、使用 1、基础使用 抽屉可以放置在内…

springcloud深度探索

中文官方文档:project - Spring Cloud Config - 《Spring Cloud中文文档》 - 书栈网 BookStackSpring Cloud ConfigFeaturesQuick StartSample Projects Spring Cloud为开发人员提供了工具,用以快速的在分布式系统中建立一些通用方案(例如配…

CDP思科发现协议解析及C/C++代码实现

通常,大多数网络都有几个路由器或交换机,为了便于网络管理,使用网络图或网络图来告诉网络中存在什么类型的设备,以及所有设备如何相互连接,使用的IP地址以及它们属于哪个VLAN的信息。 CDP是一种专有的第二层思科网络协…

Table Transformer做表格检测和识别实践

计算机视觉方面的三大顶级会议:ICCV,CVPR,ECCV.统称ICE CVPR 2022文档图像分析与识别相关论文26篇汇集简介 论文: PubTables-1M: Towards comprehensive table extraction from unstructured documents是发表于CVPR上的一篇论文 作者发布了两个模型&…

22级ACM 4.16 周赛 题解

这场能题解写的感觉没多少其实(真的不是因为懒),既然有人想要题解,那么就随便写一下吧,其实大部分的题都有人写出来,感觉这场真的不需要。 A 题 题解 Count Interval AtCoder - abc233_d_霾まる的博客-CS…