ElasticSearch 入门学习

server/2025/2/11 23:22:52/

一、ElasticSearch定义

ElasticsSearch 是一个分布式的实时文档存储,每个字段 可以被索引与搜索也是一个分布式实时分析搜索引擎也是一个能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据。

二、ElasticSearch安装和启动

1.安装JAVA的JDK

        安装ElasticSearch之前需要先下载对应的JDK。因为我是windows系统,所以提供windows下载地址:Java Downloads | Oracle

        下载JDK最好下载9以上的版本,可以省略配置环境变量的步骤。

2.安装ElasticSearch

        根据下载的JDK去支持一览表 | Elastic 网站对比可以下载的ElasticSearch版本。

        对比完成后,去Download Elasticsearch | Elastic网站下载对应版本的压缩包即可。

3.ElasticSearch启动

         找到ElasticSearch下载的根目录,进入bin目录 直接运行 elasticsearch.bat 即可

        启动后可以打开浏览器访问http://localhost:9200 来实验是否启动成功。

4.ElasticSearch浏览器访问

        ElasticSearch我下载的是8.11.4版本,启动之后,通过http://localhost:9200请求发现被拒绝,这是因为ElasticSearch默认是https请求,且需要用户名和密码。

        解决方案:

        1.找到ElasticSearch根目录,进入config目录中。

        2.打开elasticsearch.yml 将里面所有为true的选项改为false即可。

设置完毕后再重新运行elasticsearch.bat 你会发现已经可以正常返回数据了。

三、ElasticSearch-Head 安装和启动

        下载启动完elasticsearch后,我们可以用elasticsearch-head插件对集群、和数据的查询维护。

1.安装nodejs

下载node:

  • ① 下载地址:Node.js — Download Node.js®

  • ② 检查是否安装成功:Win+R CMD输入“node -v”命令检查,如果输出了版本号,则node安装成功。

 下载elasticsearch插件

  • ① 下载地址:https://github.com/mobz/elasticsearch-head

  • ② 下载完成后,打开elasticsearch-head文件夹 

  • ③ 执行npm install 命令安装所需的依赖

  • ④ 如果执行速度太慢,可以通过 npm config set registry https://registry.npmmirror.com  切换请求源后,重新执行npm install

当elasticsearch插件安装完成后,通过 npm run start 命令来启动。

但是启动后,我们elasticsearch集群状态一直是未连接

这是因为elasticsearch拥有跨域的问题

 解决方案:

        1.找到ElasticSearch根目录,进入config目录中。

        2.打开elasticsearch.yml 

        3.新增下面两行内容即可:

        http.cors.enabled: true #是否支持跨域,默认为false
        http.cors.allow-origin: "*" #当设置允许跨域,默认为*,表示支持所有域名

设置完成后,重启elasticsearch服务就能发现连接成功了! 

四、ElasticSearch操作

我下载的ElasticSearch是8.11.4版本,版本不同部分操作命令也会不同,本此记录只针对8.11.4版本。

操作文档

(1)新建文档

请求方式:PUT

请求路由:127.0.0.1:9200/customer/_doc/1 //关键字是_doc  [customer]指的是创建的索引名称  [1]指的是索引下文档ID

请求数据:{ "name": "John Doe" }

--批量新建文档

请求方式:POST

请求路由:127.0.0.1:9200/_bulk  //关键字是 _bulk

请求数据:

{ "index" : { "_index" : "customer", "_id" : "1" } } //创建索引 和 文档 id

{ "name" : "张三" } //文档内容

{ "index" : { "_index" : "customer", "_id" : "2" } }

{ "name" : "李四", "age": 10 }

{ "index" : { "_index" : "customer", "_id" : "3" } }

{ "name" : "王五", "age": 11 }

注意:每行数据后面都要有换行符,如果是postman模拟,每行的后面最好加个空格再换行

(2)获取文档 

请求方式:GET

请求路由:127.0.0.1:9200/customer/_doc/1 //关键字是_doc  [customer]是指检索的索引名称  [1]是指检索的索引下的文档ID

请求数据:空

--获取文档列表 

请求方式:GET

请求路由:127.0.0.1:9200/customer/_search  //关键字是_search [customer]是指检索的索引名称

请求数据:空

--获取数据(有条件) 

 

请求方式:GET、POST

请求路由:127.0.0.1:9200/customer/_search  //关键字是_search [customer]是指检索的索引名称

请求参数:

{"query": {         //筛选条件//"match_all": {} //获取所有//"match":{  // 匹配规则,match、term 均可//     "name":"张三"  //获取 "name" 为 "张三" 的数据//},"exists": {  //exists 和 (match_all、match) 不能共用"field": "age" //获取数据中存在 "age" 字段的文档         }},"_source": {     "includes": ["name"]  //只获取 name 字段   },"sort": [  //排序{"_id": {"order" : "asc"}  //根据 _id 进行升序查询}],"from": 0,  //从第几个数据开始获取"size": 1   //获取几个数据
}

注意:当我们用上面的请求参数测试时,es会报错:

Fielddata access on the _id field is disallowed, you can re-enable it by updating the dynamic cluster setting: indices.id_field_data.enabled

这是因为es从6.0版本后,便默认不支持通过_id的值来进行操作了,如需操作这个值则需要修改es的配置

请求方式:PUT

请求路由:127.0.0.1:9200/_cluster/settings

请求数据:{ "transient": { "indices.id_field_data.enabled": true } } 

(3)更新文档

请求方式: POST

请求路由:127.0.0.1:9200/customer/_update/1 //关键字是_update  [customer]是指检索的索引名称  [1]是指检索的索引下的文档ID

请求数据:{ "name": "Bruce Doe" }

--批量更新文档 

请求方式:POST

请求路由:127.0.0.1:9200/_bulk

请求数据:

{"update":{"_index":"customer", "_id":1}}  //指定修改的索引和文档id

{"doc":{"name":"ES从入门到放弃"}}  //指定修改的类型

{"update":{"_index":"customer", "_id":2}}

{"doc":{"name":"ES真好玩"}} 

 (4)删除文档

请求方式:DELETE

请求路由:127.0.0.1:9200/customer/_doc/1 //关键字是_doc [customer]是指检索的索引名称  [1]是指检索的索引下的文档ID

请求数据:空

--批量删除文档

请求方式:POST

请求路由:127.0.0.1:9200/_bulk

请求数据:

{"delete":{"_index":"customer", "_id":1}} //删除某个索引下的某个文档

{"delete":{"_index":"customer", "_id":3}} 


http://www.ppmy.cn/server/12147.html

相关文章

薄板样条插值TPS原理以及torch和opencv实现

薄板样条插值TPS原理以及torch和opencv实现 1、薄板样条插值TPS原理概述原理以及公式推导2、torch实现3、opencv实现1、薄板样条插值TPS原理 概述 薄板样条(Thin Plate Spline),简称TPS,是一种插值方法,可找到通过所有给定点的“最小弯曲”光滑曲面。因为它一般都是基于…

Hive数据类型

1.基本数据类型 示例: -- 创建表并定义列的数据类型 CREATE TABLE data_types_example (tinyint_column TINYINT,smallint_column SMALLINT,int_column INT,bigint_column BIGINT,boolean_column BOOLEAN,float_column FLOAT,double_column DOUBLE,string_column S…

最详细步骤解决:Apps targeting Android12 and higher are required to specify...

问题原因: 当targetSdkVersion>31时,需要在AndroidManifest.xml中配置android:exported的值,该值为boolean类型。 android:exported解释: activity 是否可由其他应用的组件启动: 如果设为 "true"&#…

人脸服务的算法内容

人脸算法可以返回在图像中找到的任何人脸的矩形坐标,以及与这些人脸相关的一系列属性,例如: 配饰:指示给定的人脸是否有配饰。 此属性会返回可能的配饰,包括头饰、眼镜和口罩,每个配饰的置信度分数介于 0 …

openGauss学习笔记-269 openGauss性能调优-TPCC性能调优测试指导-数据库服务端及客户端绑核

文章目录 openGauss学习笔记-269 openGauss性能调优-TPCC性能调优测试指导-数据库服务端及客户端绑核269.1 安装openGauss数据库269.2 停止数据库269.3 使用gs_guc工具修改数据库端口、IP等269.4 使用gs_guc工具设置如下参数269.5 执行如下命令以绑核方式启动服务端数据库269.6…

使用Pycharm运行spark实例时没有pyspark包(ModuleNotFoundError: No module named ‘py4j‘)

一、问题描述 在安装并配置pyspark,下载并打开Pycharm(专业版)后进行spark实例操作(笔者以统计文件中的行数为例)时,运行程序后提示ModuleNotFoundError: No module named py4j: 二、解决办法 …

Docker搭建启动gitbook

基本就是参考下面的文档即可。 Docker 安装 Gitbook 文档 启动的时候,会报错: Error: ENOENT: no such file or directory, stat ‘C:***demo_book\_book\gitbook\gitbook-plugin-fontsettings\fontsettings.js’ 解决方案: 用户目录下找…

【Flask】Flask中HTTP请求与接收

一、接收http请求与返回响应 在Flask中,可以通过app.route装饰器来定义路由函数。 app.route(/BringGoods,methods [POST, GET]) GET请求:使用request.args.get(key)或者request.values.get(key)来获取URL中的参数。 POST请求: 使用req…