es查询所欲_elasticsearch之查询的两种方式
前言
简单的没挑战,来点复杂的,比如查看来自顾家的都有哪些人怎么查呢?elasticsearch提供两种查询方式:
查询字符串(query string),简单查询,就像是像传递URL参数一样去传递查询语句,被称为简单搜索或查询字符串(query string)搜索。
另外一种是通过DSL语句来进行查询,被称为DSL查询(Query DSL),DSL是Elasticsearch提供的一种丰富且灵活的查询语言,该语言以json请求体的形式出现,通过restful请求与Elasticsearch进行交互。
准备数据
PUT zhifou/doc/1
{
"name":"顾老二",
"age":30,
"from": "gu",
"desc": "皮肤黑、武器长、性格直",
"tags": ["黑", "长", "直"]
}
PUT zhifou/doc/2
{
"name":"大娘子",
"age":18,
"from":"sheng",
"desc":"肤白貌美,娇憨可爱",
"tags":["白", "富","美"]
}
PUT zhifou/doc/3
{
"name":"龙套偏房",
"age":22,
"from":"gu",
"desc":"mmp,没怎么看,不知道怎么形容",
"tags":["造数据", "真","难"]
}
PUT zhifou/doc/4
{
"name":"石头",
"age":29,
"from":"gu",
"desc":"粗中有细,狐假虎威",
"tags":["粗", "大","猛"]
}
PUT zhifou/doc/5
{
"name":"魏行首",
"age":25,
"from":"广云台",
"desc":"仿佛兮若轻云之蔽月,飘飘兮若流风之回雪,mmp,最后竟然没有嫁给顾老二!",
"tags":["闭月","羞花"]
}
查询字符串
GET zhifou/doc/_search?q=from:gu
还是使用GET命令,通过_serarch查询,查询条件是什么呢?条件是from属性是gu家的人都有哪些。最后,别忘了_search和from属性中间的英文分隔符?。
结果如下:
{
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 3,
"max_score" : 0.6931472,
"hits" : [
{
"_index" : "zhifou",
"_type" : "doc",
"_id" : "4",
"_score" : 0.6931472,
"_source" : {
"name" : "石头",
"age" : 29,
"from" : "gu",
"desc" : "粗中有细,狐假虎威",
"tags" : [
"粗",
"大",
"猛"
]
}
},
{
"_index" : "zhifou",
"_type" : "doc",
"_id" : "1",
"_score" : 0.2876821,
"_source" : {
"name" : "顾老二",
"age" : 30,
"from" : "gu",
"desc" : "皮肤黑、武器长、性格直",
"tags" : [
"黑",
"长",
"直"
]
}
},
{
"_index" : "zhifou",
"_type" : "doc",
"_id" : "3",
"_score" : 0.2876821,
"_source" : {
"name" : "龙套偏房",
"age" : 22,
"from" : "gu",
"desc" : "mmp,没怎么看,不知道怎么形容",
"tags" : [
"造数据",
"真",
"难"
]
}
}
]
}
}
我们来重点说下hits,hits是返回的结果集——所有from属性为gu的结果集。重点中的重点是_score得分,得分是什么呢?根据算法算出跟查询条件的匹配度,匹配度高得分就高。后面再说这个算法是怎么回事。
结构化查询
我们现在使用DSL方式,来完成刚才的查询,查看来自顾家的都有哪些人。
GET zhifou/doc/_search
{
"query": {
"match": {
"from": "gu"
}
}
}
上例,查询条件是一步步构建出来的,将查询条件添加到match中即可,而match则是查询所有from字段的值中含有gu的结果就会返回。
当然结果没啥变化:
{
"took" : 0,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 3,
"max_score" : 0.6931472,
"hits" : [
{
"_index" : "zhifou",
"_type" : "doc",
"_id" : "4",
"_score" : 0.6931472,
"_source" : {
"name" : "石头",
"age" : 29,
"from" : "gu",
"desc" : "粗中有细,狐假虎威",
"tags" : [
"粗",
"大",
"猛"
]
}
},
{
"_index" : "zhifou",
"_type" : "doc",
"_id" : "1",
"_score" : 0.2876821,
"_source" : {
"name" : "顾老二",
"age" : 30,
"from" : "gu",
"desc" : "皮肤黑、武器长、性格直",
"tags" : [
"黑",
"长",
"直"
]
}
},
{
"_index" : "zhifou",
"_type" : "doc",
"_id" : "3",
"_score" : 0.2876821,
"_source" : {
"name" : "龙套偏房",
"age" : 22,
"from" : "gu",
"desc" : "mmp,没怎么看,不知道怎么形容",
"tags" : [
"造数据",
"真",
"难"
]
}
}
]
}
}
es查询所欲_elasticsearch之查询的两种方式相关推荐
- SAP ABAP 根据物料工厂查询工作中心(ARBPL)的两种方式
SAP ABAP 根据物料工厂查询工作中心(ARBPL)的两种方式 引言: 根据物料工厂查询工作中心的两种方式 关键字:SAP ABAP CR_WORKSTATION_READ ARBPL 工作中心 ...
- es查询所欲_Elasticsearch基本查询总结
Elasticsearch是一个分布式文档存储.Elasticsearch不会将信息存储为列数据的行,而是存储已序列化为JSON文档的复杂数据结构.当集群中有多个Elasticsearch节点时,存储 ...
- 关于串口通讯查询与中断两种方式
串口通讯有查询与中断两种方式 2011-09-13 13:31 我们知道串口通讯有查询与中断两种方式,但是对于两种方式的区别很多人并不是非常清楚,对于两者的实现到底有和不同呢?让我们简单的总结如下: ...
- Mybatis关联查询的两种方式
首先要了解对象的三种关联方式 *数据库表的关联关系有三种,一对一,一对多,多对多 一对一 是通过在任意一方的主键,引入对方主键作为外键来实现的,就是说主键与外键为同一字段 一对多 是通过在&q ...
- 20210b高考成绩查询,高考成绩6月23日公布!两种方式可查分
6月9日9时至11时30分,随着部分考生参加的高考考试科目蒙古语文乙的结束,2021年我区高考平稳.安全.顺利落幕.莘莘学子可以彻底放松心情,等待高考成绩的公布了.高考6月10日起网上阅卷,成绩将于6 ...
- mybatis一对多关联查询两种方式
mybatis一对多关联查询两种方式 前提: 方式一: 方式二: 前提: 现在有两张表,学生表跟教师表,一个教师对应多个学生 教师表: CREATE TABLE `teacher` (`id` int ...
- springboot封装统一查询对象进行多条件查询案例(mybatis和mybatis-plus+反射两种版本)
文章目录 mybatis版本: 通用查询接口 封装辅助查询类: 通用controller: 自定义注解 controller service mapper测试 mybatis-plus实现版本 ent ...
- redis优化查询的两种方式
前言 一般来说,查询成为很多应用对外的性能瓶颈,其主要原因在于一旦并发量上来了,应用后台和数据库或者其他的存储服务的IO交互次数增多了,而服务器的线程资源开销是有限的,如何减少IO次数,这是优化要考虑 ...
- mybatis一对多的查询的两种方式
需求简介: 有3张表,部门 ---->组织 ---->员工,一个部门包含多个组织,每个组织下有多名员工,现在需要根据部门ID查询某个部门下的所有组织,以及每个组织下的所有员工信息,返回的是 ...
最新文章
- linux ftrace原理
- Android之使用HTTP协议的Get/Post方式向服务器提交数据
- python tushare获取股票数据_Python 金融: TuShare API 获取股票数据 (1)
- MySql安装后在服务管理器里边找不到MySql服务项的解决办法(win10)
- VTK:循环收缩用法实战
- 企业级IM应该帮助员工提高绩效,避免无关的信息干扰
- Zookeeper:基于Zookeeper的分布式锁与领导选举
- prefix.pch文件的一些简单使用
- 关注微信公众号使其自动发送欢迎你关注消息
- 字段与属性 关于类的封装 c# 1229
- Swing basic
- 我的docker随笔8:docker容器相互访问
- 百年后你怎么在墓碑上留言?
- springboot连接redis错误 io.lettuce.core.RedisCommandTimeoutException:
- XenApp备份方法
- Linux系统高级编程系列教程
- uni-app(vue小程序)学习笔记
- html调用rpst 源码_前段播放 流媒体(RTMP,RTSP,HLS)
- linux硬盘对拷ghost教程,用dd实现linux硬盘备份 GHOST
- nRF52笔记(5)sniffer 抓包
热门文章
- 【七七八八】coursera python-basis certification
- 【手绘漫画】图解LeetCode之两两交换链表中的节点(LeetCode 24)
- Java实现文件下载
- 硬件microbit基础
- 前端如何实现黑夜模式
- 网页设计各种颜色搭配 并且哪几种颜色可以做成哪种风格
- RDSDRDSPolarDBPolarDB-X的区别
- Python进行数据分析探索
- Go语言Gin框架源码分析
- 现有一列表 ls = [‘the lord of the rings’,‘anaconda’,‘legally blonde’,‘gone with the wind’]