搜索引擎ElasticSearch基本操作(学习笔记)

说在前头: 本人为大二在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,发布的文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正。若在阅读时有任何的问题,也可通过评论提出,本人将根据自身能力对问题进行一定的解答。

前言

最近开始接触搜索引擎ElasticSearch,学习过程中可能会遗忘很多东西,因此我选择通过写文章的方式记录自己的学习过程,方便日后的复习。本人对于ElasticSearch的入门学习是通过慕课网的瓦力老师的课程进行学习的,大家如果也想对ElasticSearch进行入门的学习,也可以通过下面的链接观看。

ElasticSearch入门:https://www.imooc.com/learn/889

在这里插入图片描述

一、安装,启动ElasticSearch

对于ElasticSearch,我们可以到官网进行下载https://www.elastic.co/cn/downloads/elasticsearch

1.安装

根据自己的需求下载对应的版本,解压即可
在这里插入图片描述

2.启动

下载并解压后,进入安装目录下载bin目录,双击启动elasticsearch.bat即可(我的是window版本)。启动成功后命令行显示如下:
在这里插入图片描述此时我们访问http://localhost:9200/,如果有以下信息打印出来表示elasticsearch已经成功启动成功
在这里插入图片描述

二、安装es可视化插件

可视化插件我们选用elasticsearch-head,使用易上手。具体github下载地址:https://github.com/mobz/elasticsearch-head与elasticsearch类似,下载下来后解压即可。

找到安装目录,点击打开index.html进入可视化页面,如下
在这里插入图片描述

三、ElasticSearch基本用法

对elasticsearch的操作,我们将会使用postman发送http请求做具体的操作,因此还未下载postman的小伙伴们可以去postman的官网下载:https://www.postman.com/downloads/

1.RESTFul API

API基本格式:http://:/<索引>/<类型>/<文档id>
常用HTTP动词: GET/PUT/POST/DELETE

2.创建索引

当我们需要创建一个名为people的索引进行结构化的创建时,我们需要使用postman对http://localhost:9200/people发送 PUT 请求,并在请求体body带上具体的json数据。即:

HTTP请求格式:http://<ip>:<port>/<索引>(例如:http://localhost:9200/people)
HTTP动词:PUT
HTTP请求体json信息如下:

{
    "settings": {
    	"number_of_shards": 3,
    	"number_of_replicas": 1    
    },
    "mappings": {
    	"properties": {
    		"name": {
    			"type": "text"
    		},
    		"age": {
    			"type": "integer"
    		}
    	}	
    }
}

参数说明:
number_of_shards:索引分片数量
number_of_replicas:索引备份数量
mappings:索引结构化格式映射关键字
properties:设置索引的属性

具体操作如下:在这里插入图片描述
当我们的请求执行成功后,我们打开可视化插件elasticsearch-head可以查看到我们新创建的people索引已经显示出来了,查看其具体信息如下:
在这里插入图片描述

3.插入文档

HTTP请求格式:http://<ip>:<port>/<索引>/<类型>/<文档id>(由于es从6开始已经不支持多类型,所有的类型都为 _doc 。例如:http://localhost:9200/people/_doc/1/ )
HTTP动词:PUT
HTTP请求体json信息如下:

{
    "name": "张三",
    "age": 19
}

在这里插入图片描述在这里插入图片描述

4.修改文档

HTTP请求格式:http://<ip>:<port>/<索引>/<类型>/<文档id>/_update(例如:http://localhost:9200/people/_doc/1/_update)
HTTP动词:POST
HTTP请求体json信息如下:

{
    "doc": {
    	"name": "李四"
    }
}

在这里插入图片描述在这里插入图片描述

5.删除文档/索引

HTTP请求格式:

  • 删除文档:http://<ip>:<port>/<索引>/<类型>/<文档id> (例如:http://localhost:9200/people/_doc/1/)
  • 删除索引:http://<ip>:<port>/<索引> (例如:http://localhost:9200/people)

HTTP动词:DELETE
HTTP请求体json信息:无需json数据
在这里插入图片描述在这里插入图片描述

6.查询操作

  • 查询前准备
    查询操作的前提是我们拥有足够的数据才可以进行查询操作,因此,我们需要使用上面学会的插入操作对对索引增加几个文档,提供我们测试查询操作。
    在这里插入图片描述

  • ①:简单查询
    HTTP请求格式:http://<ip>:<port>/<索引>/<类型>/<文档id>(例如:http://localhost:9200/people/_doc/1)
    HTTP动词:GET
    HTTP请求体json信息:无需json数据
    在这里插入图片描述

  • ②:查询索引下所有文档
    HTTP请求格式:http://<ip>:<port>/<索引>/_serach(例如:http://localhost:9200/people/_search)
    HTTP动词:GET/POST
    HTTP请求体json信息如下:

{
	"query": {
		"match_all": {}
	}
}

查询结果如下:
在这里插入图片描述

  • ③:条件查询
    HTTP请求格式:http://<ip>:<port>/<索引>/_serach(例如:http://localhost:9200/people/_search)
    HTTP动词:GET/POST
    HTTP请求体json信息如下:
{
	"query": {
		"match": {
			"name": "治"
		}
	},
	"from": 1,
	"size": 1,
	"sort": [
		{
			"_id": {
				"order": "asc"
			}

在这里插入图片描述

  • ④:聚合查询
    HTTP请求格式:http://<ip>:<port>/<索引>/_serach(例如:http://localhost:9200/people/_search)
    HTTP动词:GET/POST
    HTTP请求体json信息如下:
{
	"aggs": {
		"group_by_id": {
			"terms": {
				"field": "_id"
			}
		}
	}
}

在这里插入图片描述
查询结果如下:
在这里插入图片描述

  • ④:聚合计算
    HTTP请求格式:http://<ip>:<port>/<索引>/_serach(例如:http://localhost:9200/people/_search)
    HTTP动词:GET/POST
    HTTP请求体json信息如下:
{
	"aggs": {
		"grades_id": {
			"stats": {
				"field": "age"
			}
		}
	}
}

查询结果如下:
在这里插入图片描述

高级查询

1.query

  • ①模糊匹配(当我们查找山治时,es会查找与,和能够匹配的数据,因此,在模糊条件下查找山治这一数据,将会把伊治尼治勇治都返回回来)
{
	"query": {
		"match": {
			"name": "山治"
		}
	}
}

在这里插入图片描述

  • ②习语匹配(习语匹配与模糊匹配不同,当需要配匹山治时,只会返回包含山治的数据,并不会返回与之类似的)
{
	"query": {
		"match_phrase": {
			"name": "山治"
		}
	}
}

在这里插入图片描述

  • ③多个字段的模糊匹配查询
{
	"query": {
		"multi_match": {
			"query": "1",
			"fields": ["_id", "age"]
		}
	}
}
  • ④OR的使用(模糊查找包含de 数据)
{
	"query": {
		"query_string": {
			"query": "(伊) OR (山)"
		}
	}
}
  • ④字段查询
{
	"query": {
		"term": {
			"age": 18
		}
	}
}
  • ⑤范围查询
{
	"query": {
		"range": {
			"age": {
				"gte": 1,
				"lte": 20
			}
		}
	}
}

在这里插入图片描述

2.filter

Filer Content在查询的过程中只判断该文档是否满足条件,只有Yes和No

{
	"query": {
		"bool": {
			"filter": {
				"term": {
					"age": 18
				}	
			}
		}
	}
}

3.复合查询

  • ①固定分数查询(如下,查询固定分数为2的数据)
{
	"query": {
		"constant_score": {
			"filter": {
				"match": {
					"name": "山治"
				}	
			},
			"boost": 2
		}
	}
}
  • ②布尔查询(如下:查询age应为18,name中包含“山”的数据)
{
	"query": {
		"bool": {
			"should": [
				{
					"match": {
						"age": 18
					}
				},
				{
					"match": {
						"name": "山"
					}
				}
			]
		}
	}
}

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
elasticsearch 学习笔记包括以下内容: 一、Elasticsearch概述: - Elasticsearch是一种开源的分布式搜索和分析引擎,可以用于快速搜索、分析和存储大量的结构化和非结构化数据。 - Elasticsearch与Solr相比有一些区别,包括用户、开发和贡献者社区的规模和成熟度等方面。 二、Elasticsearch安装: 1. 下载Elasticsearch,可以从官方网站或华为云镜像下载。 2. 安装Elasticsearch。 三、安装head插件: - head插件是一个可视化的管理界面,可以方便地管理和监控Elasticsearch集群。 四、安装Kibana: 1. Kibana是一个开源的数据可视化工具,用于展示和分析Elasticsearch中的数据。 2. 下载Kibana并安装。 3. 启动Kibana并进行访问测试。 4. 可选的汉化操作。 五、ES核心概念理解: - 学习ES的核心概念,包括索引、文档、映射、查询等。 以上是elasticsearch学习笔记的主要内容,希望对你有帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Elasticsearch 学习笔记(上)](https://blog.csdn.net/m0_52691962/article/details/127064350)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云丶言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值