一、什么是Elasticsearch?
-
Elasticsearch是一个开源的搜索与分析引擎,它具备分布式和高扩展性的特性。在构建实时、可扩展的搜索和分析应用方面,Elasticsearch发挥了关键作用。其核心功能在于存储、搜索和分析海量的数据。
-
为实现高效的全文搜索,Elasticsearch采用了倒排索引这一数据结构,这使得它能够高效地处理大量文本数据,并精准地返回与搜索查询相关的结果。不仅如此,Elasticsearch还支持丰富的查询语法和高级搜索功能,如模糊搜索、多字段搜索以及布尔搜索等,满足了复杂搜索场景的需求。
-
Elasticsearch具有实时处理数据的能力,能够提供近实时的搜索和分析服务。这一特性使得Elasticsearch能够应对不断变化的数据需求,确保搜索结果的时效性和准确性。
二、Elasticsearch (Window版) 安装
2.1 下载软件
elasticsearch-7.8.0-windows:百度网盘下载链接
elasticsearch-7.8.0-windows:官方下载链接
2.2 解压压缩包
tar -zxvf elasticsearch-7.8.0-windows-x86_64.zip
2.3 启动Elasticsearch
进入bin 文件夹,双击启动elasticsearch.bat
2.4 目录分析
三、Elasticsearch 语法学习
3.1 索引操作
① 创建索引
与关系型数据库相比比如Mysql, 创建索引类似于在Mysql创建数据库
用apifox 发送一个Put请求
http://127.0.0.1:9200/test
如果再发送一次同样的请求,则会出现索引已经存在的错误
如果请求的方式是Post也会报错
② 查看索引
用apifox 发送一个Get请求
http://127.0.0.1:9200/_cat/indices?v
③ 删除索引
用apifox 发送一个Delete请求
http://127.0.0.1:9200/test
3.2 文档操作
① 创建文档
用apifox 发送一个Post请求
http://127.0.0.1:9200/test/_doc
请求体内容为
json
{
"name":"小牛历险记",
"number": 10,
"prices": 10,
"size": 20
}
上面的数据创建后,由于没有指定数据唯一性标识(ID),默认情况下,ES 服务器会随机 生成一个。
如果想要自定义唯一性标识,需要在创建时指定:
http://127.0.0.1:9200/test/_doc/1
如果增加数据时明确数据主键,那么请求方式也可以为 Put,否则只能使用Post请求
② 查看文档
我们新建一个明确id的文档
用apifox 发送一个Get请求
http://127.0.0.1:9200/test/_doc/1
如果需要查看该索引的所有文档可以输入
③ 修改文档
请求路径相同,请求体相同的更新数据,请求体没有数据直接丢失
如果只需要修个某一个字段可以发送一个Post请求:
http://127.0.0.1:9200/test/_doc/1
请求体为
{ "doc": { "name": "小牛牛牛" } }
④ 删除文档
删除文档时,系统并不会直接将其从磁盘物理空间中移除,而是采取一种逻辑删除的方式,即给文档打上已删除的标记。
发送一个Delete请求
http://127.0.0.1:9200/test/_doc/1
⑤条件查询
我们新增两个id不同,文档相同的
然后发送一个Get请求
http://127.0.0.1:9200/test/_doc/_search
请求体为
json
{
"query":{
"match" :{
"name": "小牛历险记"
}
}
}
如果需要查询所有的文档可以输入请求体为:
json
{
"query":{
"match_all" :{
}
}
}
条件查询:分页查询:from ,size 只显示字段:_source 排序:sort
json
{
"query": {
"match_all": {}
},
"from": 2,
"size": 2,
"_source": [
"name"
],
"sort": {
"number": {
"order": "desc"
}
}
}
条件查询: 且: must
json
{
"query": {
"bool": {
"must": [
{
"match": {
"name": "小牛牛牛"
}
},
{
"match": {
"number": "10"
}
}
]
}
}
}
条件查询:或 :should
json
{
"query": {
"bool": {
"should": [
{
"match": {
"name": "小牛牛牛"
}
},
{
"match": {
"number": "10"
}
}
]
}
}
}
条件查询:过滤:filter
json
{
"query": {
"bool": {
"should": [
{
"match": {
"name": "小牛牛牛"
}
},g
{
"match": {
"number": "10"
}
}
],
"filter" :{
"range" : {
"number" : {
"gt" : 50
}
}
}
}
}
}
条件查询: 完全匹配 :match_phrase
json
{
"query": {
"match_phrase" : {
"name" : "小黄"
}
}
}
条件查询: 高亮查询:highlight
json
{
"query": {
"match_phrase": {
"name": "小牛"
}
},
"highlight": {
"fields": {
"name": {}
}
}
}
聚合操作 aggs
json
{
"aggs" : {
"number_group" :{
"terms" : {
"field" : "number"
}
}
},
"size" : 0
}
json
{
"aggs" : {
"number_avg" :{
"avg" : {
"field" : "number"
}
}
},
"size" : 0
}
3.3 关系映射
json
{
"properties": {
"name": {
"type": "text",
"index": true
},
"price": {
"type": "keyword",
"index": true
},
"number": {
"type": "keyword",
"index": false
}
}
}
四、总结
本文深入剖析了Elasticsearch的安装、配置及其核心操作与语法。Elasticsearch以其强大的搜索分析功能,支持索引的创建与管理、文档的增删改查以及高效的查询分析和数据处理。通过深入学习和掌握其丰富的语法和功能,用户能够构建出高效且可扩展的数据处理应用,满足复杂多变的数据处理需求。