Elasticsearch 系列指南(二)——基本用法

ElasticSearch原理+实战知识点 今天为大家带来流计算领域经常使用的组件 ElasticSearch,本文通过原理+实战操 教程带领大家快速学会 ElasticSearch 搜索引擎,以下内容全部经过实战操作,可 以根据文档进行学习~ 大纲如下: 1 ElasticSearch 概述 1.1 全文搜索引擎 小伙伴们经常使用 google 或者百度进行搜索内容,在输入框中输入关键字,这个时候,网站会将包含 关键字 的所有网页返回,大家有没有想过,为什么输入关键字就可以查到结果呢? 同时网站上返回的页面内容大多都是一些 非结构化 的文本数据, 阅读详情

Elasticsearch是以Restful 风格来命名自己的API的,因此这节就以此来学习下Elasticsearch的基本用法。

基本用法

API基本格式:http://<ip>:<port>/<索引>/<类型>/<文档id>

常用http动词:GET/PUT/POST/DELETE

创建索引

打开我们的head插件:http://localhost:9100/

点击索引-创建索引 如图:

这里写图片描述

填写索引名称、分片数、被分数(默认为5个分片1个备份),注意分片创建成功后无法修改,备份数可随意修改,创建完成后如图所示:

这里写图片描述

book为索引名称,01234为5个分片,粗线框为主分片,细线框为备份分片,对应关系如:细线框0为粗线框0的备份,以此类推,通常备份和主分片在不同的节点上,这样一个节点挂了还有备份分片。

以上为非结构化索引,相反还有结构化索引,那么怎么区分呢?

点击上面的信息-索引信息出现如图:查看里面的结构化关键词mappings,为空则为非结构化索引

这里写图片描述

那么如果创建结构化索引呢:
点击复合查询输入如下格式:

这里写图片描述

点击易读-验证JSON正确后提交,在点击信息-索引信息查看mappings有结构映射的,即为格式化的索引

这里写图片描述

以上我们创建索引是在head插件了,但head并不是很完美,这里我推荐使用postman这个工具,他是一个具有http请求的模拟器,可以自动验证json格式,具体用法可以百度下很简单,如图创建people这个索引:

这里写图片描述

基本增删改查
插入文档

指定文档id插入

自动产生文档id插入

文档id是一个唯一索引值指向我们的文档数据

下面我们来插入一条数据

这里写图片描述

可以看到已经插入成功,可以去head插件查看具体信息,这里解释下120.0.0.1:9200/people/man/1 peolpe为创建的文档索引man为文档类型1为文档id,因此这里是指定文档id插入,而自动产生文档id插入只需将请求的动词PUT改为POST地址120.0.0.1:9200/people/man/1改为120.0.0.1:9200/people/man即可,这时的id就会自动帮我们生成,是随机的一行字符串,点击head插件的数据浏览即可看到结果

这里写图片描述

修改文档

直接修改文档:请求的动词PUT改为POST地址120.0.0.1:9200/people/man/1改为120.0.0.1:9200/people/man/1/_update即可,参数加上doc如:

{
    "doc":{
        "name":"哈哈"
    }
}

脚本修改文档:请求方式地址同上,参数改为

{
    "script":{
        "lang":"painless",           //指定脚本语言
        "inline":"ctx._source.age += 10"   //脚本内容
    }
}
ctx:上下文,_source:当前文档内容 指在原来年龄上加10
{
    "script":{
        "lang":"painless",
        "inline":"ctx._source.age = params.age",
        "params":{
            "age":100
        }
    }
}
这种方式可以指定年龄为多少
删除文档

设置请求方式为DELETE地址为120.0.0.1:9200/people/man/1即可删除id为1的文档

删除索引

设置请求方式为DELETE地址为120.0.0.1:9200/people即可,或者在head插件直接删除,需要注意删除索引后将索引下的数据也会删除掉

查询

简单查询:设置请求方式为GET地址为120.0.0.1:9200/people/man/1即查询id为1的文档

条件查询:设置请求方式为POST地址为120.0.0.1:9200/people/_search各种查询条件(参数:均以query为关键词)为:

{
    "query":{
        "match_all":{}      //查询所有
    },
    "from":0,       //查询数据的起始位置
    "size":1        //返回的数据条数
}
{
    "query":{
        "match":{
            "name":"小王"     //条件查询,名字为小王的数据,默认会查到含有小王任意一个字的所有数据局,改为match_phrase只查包含小王的数据,改为term更精准查询,只查是小王的数据
        }
    },
    "sort":[                    //排序,按时间倒序
        {
            "date":{
                "order":"desc"
            }
        }
    ]
}

聚合查询:设置请求方式为POST地址为120.0.0.1:9200/people/_search 关键字为aggs查询条件为:

{
    "aggs":{
        "group_by_age":{        //指定查询结果的名字
            "terms":{           //查询统计不同年龄的个数
                "field":"age"
            }
        },
        "group_by_date":{
            "terms":{
                "field":"date"      //查询不同日期的个数
            }
        }
    }
}
//可以设置多个分组
{
    "aggs":{
        "grades_age":{      //指定查询结果的名字
            "stats":{       //查询统计年龄的个数最大最小值平均值等
                "field":"age"
            }
        }
    }
}
//stats可改为其他如:min为查最小值
高级查询

子条件查询:特定子弹查询所指特定值,又分为Query context和Filter context

Query context:在查询过程中,除了判断文档是否满足查询条件外,ES还会计算一个_score来标识匹配的程度,旨在判断目标文档和查询条件匹配的有多好

模糊查询:设置请求方式为POST地址为120.0.0.1:9200/people/_search查询条件为:

{
    "query":{
        "multi_match":{
            "query":"小花",
            "fields":["name","country"]
        }
    }
}
//查询name和country中有小花数据

语法查询:设置请求方式为POST地址为120.0.0.1:9200/people/_search查询条件为:

{
    "query":{
        "query_string":{        //语法查询关键字
            "query":"小花 or 小明",
            "fields":["name","country"]
        }
    }
}
查询小花 or 小明在name和country两个子段的数据

范围查询:设置请求方式为POST地址为120.0.0.1:9200/people/_search查询条件为:

{
    "query":{
        "range":{
            "age":{
                "gt":20,        //大于20
                "lte":27        //小鱼等于27 ,e是equals的意思等于
            }
        }
    }
}
//查询年龄大于20小鱼等于27的数据

Filter context:在查询过程中,只判断文档是否满足条件,只有YES或者NO,Filter就是过滤的作用,只差复合Filter条件的数据,效率比query要快,必须要和bool配合使用

{
    "query":{
        "bool":{
            "filter":{
                "term":{
                    "age":22 }
            }
        }
    }
}
//查询年龄为22的数据

复合条件查询:以一定的逻辑组合子条件查询

{
    "query":{
        "bool":{
            "must":[    //必须满足下面两个条件,与的关系,改为should就是或的关系及满足之一就可以,改为must_not为一定不满足
                {
                    "match":{
                        "name":"小明" }
                },{
                    "match":{
                        "country":"小花" }
                }
            ],
            "filter":[              //拦截年龄为22的
                {
                    "term":{
                        "age":22 }
                }
            ]
        }
    }
}
//查询必须满足name包含小明和country包含小花且年龄为22的数据
分布式搜索引擎之elasticsearch基本使用3 因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。 阅读详情

相关推荐

分布式搜索引擎之elasticsearch基本使用1

什么是elasticsearch?一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能什么是elastic stack(ELK)?是以elasticsearch为核心的技术栈,包括beats、Logstash、kibana、elasticsearch什么是Lucene?是Apache的开源搜索引擎类库,提供了搜索引擎的核心API分词器的作用是什么?创建倒排索引时对文档分词用户搜索时,对输入的内容分词IK分词器有几种模式?ik_smart:智能切分,粗粒度。

weixin_43956070的博客 1273

ElasticSearch详解

在 flush 过程中,内存中的缓冲将被清除,内容被写入一个新的 Segment,Segment 的 fsync 将创建一个新的提交点( Commit Point),并将内容刷新到磁盘,旧的translog将被删除并开始一个新的translog,flush 触发的时机是定时触发(默认30分钟)或者 translog 变得太大(默认512M)时。取决于你的文档的大小,分片的数量和你使用的硬件,给 10,000 到 50,000 的结果文档深分页( 1,000 到 5,000 页)是完全可行的。

7B_Geek的博客 3万+

Elasticsearch搜索引擎

本篇博客系统地介绍了Elasticsearch 7.14.0在windows环境下安装、基本使用、Springboot集成Elasticsearch以及ELK搭建。

weixin_44490884的博客 1671

Elasticsearch 简介

Elasticsearch是一个非常强大的搜索引擎。它目前被广泛地使用于各个IT公司。Elasticsearch是由Elastic公司创建并开源维护的。它的开源代码位于https://github.com/elastic/elasticsearch。同时,Elastic公司也拥有Logstash及Kibana开源项目。这个三个开源项目组合在一起,就形成了 ELK软件栈。他们三个共同形成了一个强大的...

Elastic 中国社区官方博客 17万+

Elasticsearch —— ES 环境搭建、概念、基本操作、文档操作、SpringBoot继承ES

链接:提取码: xr76一、注:环境搭建过程中的命令窗口不能关闭,关闭了服务就会关闭(除了修改设置后重启的)●ES 下载地址:默认打开是最新版本新建一个文件夹,重名为 ES ,将解压在 bin 目录中 双击启动 elasticsearch.bat访问 http://127.0.0.1:9200成功●前提需要安装 nodejsgithub 下载 elasticsearch head :解压从界面访问 9200 服务会出现跨域问题。

king_faner的博客 1781

【ES系列】Elasticsearch简介:为什么需要它?(基础篇)

🔥 【ES系列】深入浅出讲解Elasticsearch!本文将带你全面了解ES的前世今生,以及它为什么能在当今技术栈中占据重要地位。作为ES起飞之路系列的开篇之作,本文从ES的定义、核心特性、技术优势、应用场景等多个维度,深入剖析了ES的价值。同时,通过与Solr、Splunk等同类产品的对比,帮助读者更好地理解为什么选择ES。文章通俗易懂,既照顾了初学者的需求,也为进阶学习提供了方向。如果你正在学习ES或考虑使用ES,这篇文章一定不容错过!

Pte_moon的博客 2212

Elasticsearch6.2.2 X-Pack部署及使用详解

X-Pack已经开源,预计Elasticsearch6.3版本会全面集成,不再收费。 赶紧体验一下强大的X-pack吧! 1、 X-Pack 概览 X-Pack 简介 1)利用 X-Pack 拓展可能性。 X-Pack 是集成了多种便捷功能的单个插件 — security、alerting、monitoring、reporting、graph 探索和 machine learning...

铭毅天下Elasticsearch 1万+

STM32H723ZGT6-单ADC极限采样率实战与分辨率权衡

本文通过实战测试,深入探讨了STM32H723ZGT6微控制器中单ADC模块的极限性能。文章详细展示了如何通过CubeMX配置时钟树、ADC参数、定时器触发与DMA,实测得出在16位分辨率下最高稳定采样率约为4.6MHz,而将分辨率降至8位后,采样率可提升至约6.2MHz,并分析了速度与分辨率之间的关键权衡,为高速数据采集项目提供选型与优化参考。

weixin_29240711的博客 297

Elasticsearch(看这一篇就够了)

Elasticsearch是一个全文检索服务器全文检索是一种非结构化数据的搜索方式结构化数据:指具有固定格式固定长度的数据,如数据库中的字段。非结构化数据:指格式和长度不固定的数据,如电商网站的商品详情。结构化数据一般存入数据库,使用sql语句即可快速查询。但由于非结构化数据的数据量大且格式不固定,我们需要采用全文检索的方式进行搜索。全文检索通过建立倒排索引加快搜索效率。真实开发中我们往往需要对一段内容既进行文字分词,又进行拼音分词,此时我们需要自定义ik+pinyin分词器。创建自定义分词器。

m0_74436895的博客 2万+

使用Matlab进行IEEE 33节点潮流计算的NR法实现详解及应用实例

IEEE 33节点系统是一个标准的配电系统模型,广泛用于学术研究和工程应用。该系统由33个节点和37条线路组成,结构复杂,具有代表性。其潮流计算结果可用于验证各种潮流计算方法的准确性和效率。NR法是一种基于迭代求解的潮流计算方法,通过不断迭代求解非线性方程组,直到达到预定的收敛条件。NR法具有收敛速度快、计算精度高的优点,适用于大规模复杂电力系统的潮流计算。

m0_57781768的博客 2070

5nm制程的CV5芯片实测:用它给无人机做8K拍摄和实时避障,功耗和性能到底怎么样?

本文深度评测了5nm制程的CV5芯片在无人机8K拍摄和实时避障中的表现。通过实测数据展示了CV5的异构计算架构、8K视频编码性能和CVflow®AI引擎的加速效果,同时提供了开发中的优化技巧和散热建议,为无人机开发者提供了实用的参考。

weixin_30861797的博客 358

【ElasticSearch笔记】ES基本查询

Elasticsearch的基本使用,基础概念了解和常用查询语句示例说明。

木子家有小可爱的博客 2994

【华为OD机试】真题A卷-Linux发行版的数量(Python)

【华为OD机试】真题A卷-Linux发行版的数量(Python):Linux操作系统有多个发行版,distrowatch.com提供了各个发行版的资料。这些发行版互相存在关联,例如Ubuntu基于Debian开发,而Mint又基于Ubuntu开发,那么我们认为Mint同Debian也存在关联。 发行版集是一个或多个相关存在关联的操作系统发行版,集合内不包含没有关联的发行版。给你一个nxn的矩阵isConnected,其中isConnected[i][i]=1表示第i个发行版和第j个发行版直接

u014481728的博客 942

ES(Elasticsearch)的基本使用

elasticsearch的基本认识,以及springboot整合es的内容

学习笔记 6251

手把手教你安装 OpenClaw 小龙虾(MAC安装教程),一次成功不踩坑

本文详细介绍了在Mac上安装OpenClaw的完整流程。主要内容包括:1)准备工作(磁盘空间、网络环境、终端工具);2)安装Homebrew包管理器及常见问题解决;3)安装Node.js 22+版本(环境核心);4)Git安装与验证;5)OpenClaw项目克隆、依赖安装及运行配置;6)大模型配置方法(以MiniMax为例)。文章提供了详细的命令行操作步骤和常见错误解决方案,特别强调了网络环境要求和Apple Silicon芯片的原生支持注意事项。最后展示了验证配置成功的方法和资源获取渠道。

Chengbei11的博客 6338

【PINN物理信息网络】基于PINN物理信息网络结合Wave 2D有限差分方法(python)

【PINN物理信息网络】基于PINN物理信息网络结合Wave 2D有限差分方法(python)

k8291121的博客 1818

详解最热门搜索引擎——ES

一、产生背景 ​ 互联网发展早期的时候,对于一般的公司储存的数据量不是那么的大,所以很多公司更倾向于使用数据库去存储和查询数据,如:现在去MySQL中查询数据,大概的查询方式就是:select * from table where filed like “%XXX%”或者其他方式,但是,如果我们在查询的时候没有用到或命中数据库建立的索引话,则会扫描整张表,即便是MySQL做过单表查询能力优化,但是他的极限也只在400万左右,且还会经常出现超时现象,让后为了解决这些问题,。很多公司就开始对数据库进

会编程的小郑 1万+

ABAP CDS HAVING 全解析:聚合之后的精准过滤、最佳实践与可运行示例

摘要: 本文针对具备ABAP与CDS基础的开发者,详解HAVING在ABAP CDS中的核心用法。HAVING专用于过滤GROUP BY后的聚合结果(如SUM、COUNT),与WHERE的分工明确:前者处理聚合值,后者过滤原始记录。通过销售额阈值、质量分析、财务对账三类典型场景,结合性能优化建议(如优先使用WHERE索引过滤),说明实际应用。文中提供经典CDS View与View Entity两种实现代码,并附Open SQL消费示例,帮助开发者快速落地。常见误区(如聚合条件误写至WHERE)与规避方法亦被

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 220

Elasticsearch(ES)简介及基本使用

ES 简介 ES是一个使用java语言编写的并且基于Lucene编写的搜索引擎, 他提供了分布式的全文搜索服务, 还提供了一个RESTful风格的web接口, 官方还对多种语言提供了相应的API Lucene? Lucene 本身就是一个搜索引擎的底层, ES特点 分布式: ES主要为了横向扩展能力 全文检索: 将一段词语进行分词, 并且将分出的单个词语统一的放入一个分词库中,在搜索时,根据关键字去分词库中搜索去找到想找到的内容,(倒排索引) RESTful风格web接口: 操作ES非常简单, 只需要

JAVA菜鸟 2万+

【推荐100个unity插件之8】实现多人在线联机游戏——Mirror插件的使用介绍(附项目源码)

基于Mirror的Unity多人游戏开发指南 本文介绍了使用Mirror插件开发Unity多人游戏的基本流程。Mirror是Unity的高级网络API,替代了已废弃的UNet系统。文章详细讲解了如何导入Mirror插件,创建NetworkManager网络管理器,处理常见错误,以及创建玩家角色和出生点。 主要内容包括: 创建场景NetworkManager并配置必要组件 为玩家添加NetworkIdentity和NetworkTransform组件 设置玩家初始生成位置和生成方式 常见错误及解决方法 通过M

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Elasticsearch基本概念

本文主要是对ES基本概念进行整合,理论先行,夯实对ES的基本概念,在知道“是什么”,才能提高学习效率,保姆级学习教程请移步: ES入门笔记. 一、前文介绍 Elasticsearch(简称ES)是一个基于Apache Lucene™的开源搜索引擎,无论在开源还是专有领域,Lucene 可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。注意,Lucene 只是一个库。想要发挥其强大的作用,你需使用 Java 并要将其集成到你的应用中。 Lucene 非常复杂,你需要深入的了解检索相关知识来理解它

chwensrong的博客 4万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

es基本用法

Elasticsearch 是一个开源的搜索引擎,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单, 通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API一个分布式的实时文档存储,每个字段可以被索引与搜索一个分布式实时分析搜索引擎能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据。

qq_34016512的博客 2925

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

从零学Elasticsearch系列——使用kibana实现ES基本的操作

一、使用Kibana实现ES基本的操作 进入kibana开发测试工具界面 查看集群 查看集群健康信息 GET /_cat/health?v 集群状态(status) Green(正常) Yellow(正常,但是一些副本还没有分配) Red(非正常) 可以使用GET /_cat/health?help查看每个操作返回结果字段的意义 注意: 这里的GET是RESTful API的请求方式 ...

高興 2万+

ES 分布式搜索引擎【一】

分布式搜索引擎,elasticsearch、kibana、IK分词器的安装与使用。

m0_52861684的博客 1713

es介绍和基本用法

ElasticSearch 引言 1.在海量数据中执行搜索功能时,如果使用MySQL, 效率太低。 2.如果关键字输入的不准确,一样可以搜索到想要的数据。 3.将搜索关键字,以红色的字体展示。 介绍: es是一个使用java语言并且基于Lucene编写的搜索引擎框架,提供了分布式的全文搜索功能,提供了一个统一的基于restful风格的web接口。 haystack:全文检索的框架,支持whoosh、solr、Xapian、Elasticsearc四种全文检索引擎,点击查看官方网站。 whoosh:纯Pyt

tang_yu_mac的博客 1万+

ES的基本用法

ES的基本概念 1> 集群和节点 一个es集群是由一个或多和es节点组成的集合 每一个集群都有一个名字, 如之前的wali 每个节点都有自己的名字, 如之前的master, slave1, slave2 节点是可以存储数据, 参与索引数据等的独立服务 2> 索引(类似于数据库里面的database) 索引是含有相同属性的文档集合 索引在es中是通过一个...

qq_41536778的博客 3369
上一篇: Elasticsearch 系列指南(一)——安装配置
下一篇: Elasticsearch 系列指南(三)——集成ik分词器
我叫周伯通
博客等级 码龄10年 20粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值