热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ES常用查询操作学习总结(13种)

原标题:ES常用查询操作学习总结(13种)目录1、id和idsidids2、match查询

原标题:ES常用查询操作学习总结(13种)

目录

1、id和ids

id

ids

2、match查询

查询所有

查看分词效果

1、将《浙江省》进行中文分词《浙江》《浙江省》《省》2、将分词结果逐一匹配词条特点:先分词.,再拿词去匹配倒排索引

bool match:query的值不会被分词,直接匹配词条,默认and

query的值先分词,再匹配词条

multi_match:多域查询,query的值会分词,然后在多个域中匹配词条,只要其中一个域能匹配即可

关键字检索,可以使用match进行检索,因为match是先分词再匹配词条

3、term 查询

term:不分词直接匹配词条,按物品分类或者品牌这类检索,可以使用term检索

4、prefix 查询

prefix:词条以指定的value为前缀的

5、wildcard 查询

wildcard:不分词通配符的方式匹配词条 ,*指任意内容?指任意一个内容??指任意两个内容

6、range 查询

范围查询,gte为大于等于,lte为小于等于

7、分页查询

from+size:先查询所有,from:从1开始查(从0角标开始) size:每页显示两条

8、复合查询

must:求交集,must 多个查询单元必须同时匹配

must not:取反,must not 多个查询单元 必须都不匹配(address既不能等于“河北河南”,age既不能大于30小于36)

should:并集,多个查询单元满足其中一个条件即可

9、高亮查询

单个域的高亮

多个域的高亮

10、boosting查询

影响文档分数的因素:

1、当查询的关键字在文档出现的频次越高,分数越高

2、指定的文档内容越短,分数越高,如查找的是黄花鱼,指定文档内容就是黄花鱼

11、过滤

查询结果过滤掉不想要的文档

影响分数值score:​编辑

过滤 filter是不影响分数的

12、排序

desc:降序 asc:升序

13、聚合

Elasticsearch中的聚合,包含多种类型,最常用的两种,一个叫度量(metrics):,一个叫桶(bucket)

度量(metrics)

桶(bucket)

1、id和ids

id


GET es_user/_doc/1


ids


GET es_user/_search //批量查询
{
"query": {
"ids": {"values": [1,2,3]}
}
}


2、match查询

查询所有


GET es_user/_search
{
"query": {
"match_all": {}
}
}


查看分词效果


GET _analyze
{
"analyzer": "ik_max_word",
"text": "浙江省杭州市浙江大学"
}


1、将《浙江省》进行中文分词《浙江》《浙江省》《省》
2、将分词结果逐一匹配词条
特点:先分词.,再拿词去匹配倒排索引


GET es_user/_search
{
"query": {
"match": {
"address": "浙江省"
}
}
}


bool match:query的值不会被分词,直接匹配词条,默认and


GET es_user/_search
{
"query": {
"match": {
"address": {
"query": "浙江我爱杭州",
"operator": "and"
}
}
}
}


query的值先分词,再匹配词条


GET es_user/_search
{
"query": {
"match": {
"address": {
"query": "浙江我爱杭州",
"operator": "or"
}
}
}
}


multi_match:多域查询,query的值会分词,然后在多个域中匹配词条,只要其中一个域能匹配即可


GET es_user/_search
{
"query": {
"multi_match": {
"query": "我爱中国",
"fields": ["address","email"]
}
}
}


关键字检索,可以使用match进行检索,因为match是先分词再匹配词条


3、term 查询

term:不分词直接匹配词条,按物品分类或者品牌这类检索,可以使用term检索


GET es_user/_search
{
"query": {
"term": {
"address": {
"value": "杭州好地方"
}
}
}
}


4、prefix 查询

prefix:词条以指定的value为前缀的


GET es_user/_search
{
"query": {
"prefix": {
"address": {
"value": "杭"
}
}
}
}


5、wildcard 查询

wildcard:不分词通配符的方式匹配词条 ,*指任意内容?指任意一个内容??指任意两个内容


GET es_user/_search
{
"query": {
"wildcard": {
"address": {
"value": "杭州*"
}
}
}
}

GET es_user/_search
{
"query": {
"wildcard": {
"address": {
"value": "杭州??"
}
}
}
}


6、range 查询

范围查询,gte为大于等于,lte为小于等于


POST es_user/_search
{
"query": {
"range": {
"age": {
"gte": 32,
"lte": 36
}
}
}
}


7、分页查询

from+size:先查询所有,from:从1开始查(从0角标开始) size:每页显示两条


POST es_user/_search
{
"from": 0,
"size": 2,
"query": {
"match_all": {
}
}
}


8、复合查询

must:求交集,must 多个查询单元必须同时匹配


GET es_user/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"address": {
"value": "浙江省"
}
}
},
{
"range": {
"balance": {
"gte": 5600,
"lte": 6000
}
}
}
]
}
}
}


must not:取反,must not 多个查询单元 必须都不匹配(address既不能等于“河北河南”,age既不能大于30小于36)


GET es_user/_search
{
"query": {
"bool": {
"must_not": [
{
"match": {
"文章来源地址16716.htmladdress": "河北河南"
}
},
{
"range": {
"age": {
"gte": 30,
"lte": 36
}
}
}

]
}
}
}


should:并集,多个查询单元满足其中一个条件即可


GET es_user/_search
{
"query": {
"bool": {
"should": [
{
"term": {
"address": "河南河北"
}
},
{
"range": {
"age": {
"gte": 30,
"lte": 36
}
}
}

]
}
}
}


9、高亮查询

单个域的高亮


GET es_user/_search
{
"query": {
"match": {
"address": "浙江"
}
},
"highlight": {
"fields": {
"address": {}
},
"pre_tags": "",
"post_tags": ""
}
}


10、boosting查询

影响文档分数的因素:


1、当查询的关键字在文档出现的频次越高,分数越高


2、指定的文档内容越短,分数越高,如查找的是黄花鱼,指定文档内容就是黄花鱼

positive、negative、negative_www.yii666.comboost 要写完整,不然运行报status:400

设置的negative_boost 值可以把 "_score" 的 值,增加或者减少,影响文档默认排序的分数score

GET es_user/_search
{
"query": {
"boosting": {
"positive": {
"match": {
"address": "浙江省"
}
},
"negative": {
"match": {
"job": "后端"
}
},
"negative_boost": 5
}
}
}


11、过滤

查询结果过滤掉不想要的文档

过滤和查询都能起到对结果集的过滤效果,但是查询会影响到文档的评分及排名,而过滤不会。如果我们需要在查询结果中进行过滤,并且不希望过滤条件影响评分,那么就不要把过滤条件作为查询条件来用。而是使用filter方式

影响分数值score:


过滤 filter是不影响分数的


GET /es_user/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"address": "杭州人"
}
}

],
文章来源站点https://www.yii666.com/ "filter": [
{
"term": {
"job": "工程师"
}
}
]
}
}
}


12、排序

desc:降序 asc:升序


GET /es_user/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"address": "杭州人"
}
}

],
"filter": [
{
"term": {
"job": "工程师"
}
}
]
}
},
"sort": [
{
"age": {
"order": "desc"
}
}
]
}


13、聚合

Elasticsearch中的聚合,包含多种类型,最常用的两种,一个叫度量(metrics):,一个叫桶(bucket)


度量(metrics)

分组完成以后,我们一般会对组中的数据进行聚合运算,例如求平均值、最大、最小、求和等,这些在ES中称为度量

比较常用的一些度量聚合方式:


  • Avg Aggregation:求平均值


  • Max Aggregation:求最大值


  • Min Aggregation:求最小值


  • Percentiles Aggregation:求百分比


  • Stats Aggregation:同时返回avg、max、min、sum、count等


  • Sum Aggregation:求和


  • Top hits Aggregation:求前几


  • Value Count Aggregation:求总数


  • ……



//求平均年龄、最大年龄、最小年龄以及求和
GET /es_user/_search
{
"query": {
"match": {
"address": "杭州"
}
},
"aggs": {
"age_avg": {
"avg": {
"field": "age"
}
},
"max_age":{
"max": {
"field": "age"
}
},
"min_age":{
"min": {
"field": "age"
www.yii666.com }
},
"sum_age":{
"sum": {
"field": "age"
}
}
}
}


桶(bucket)

桶的作用,是按照某种方式(或某个条件)对数据进行分组,每一组数据在ES中称为一个桶 比如:职位

size的值,指列出几种数据。

GET /es_user/_search
{
"query": {
"match": {
"address": "杭州市"
}
},
"aggs": {
"job_group": {
"terms": {
"field": "job.keyword",
"size": 10

}
}
}
}

来源于:ES常用查询操作学习总结(13种)


推荐阅读
  • JavaScript实现拖动对话框效果
    原标题:JavaScript实现拖动对话框效果代码实现:<!DOCTYPEhtml><htmllan ... [详细]
  • 使用圣杯布局模式实现网站首页的内容布局
    本文介绍了使用圣杯布局模式实现网站首页的内容布局的方法,包括HTML部分代码和实例。同时还提供了公司新闻、最新产品、关于我们、联系我们等页面的布局示例。商品展示区包括了车里子和农家生态土鸡蛋等产品的价格信息。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • rabbtimq相关下载与安装
    rabbitmq与elang版本关系查看https:www.rabbitmq.comwhich-erlang.html#eol-series  rpm下载地址https:githu ... [详细]
  • ProjectReport- ... [详细]
  • 前端开发中的重要一环:使用原生JavaScript封装jQuery库
    2019独角兽企业重金招聘Python工程师标准用原生js封装jquery的实现base.js***上官清偌*前台调用var$function(_this){return ... [详细]
  • 智商狂飙,问了ChatGPT几个数据库问题后,我的眼镜掉了
    原标题:智商狂飙,问了ChatGPT几个数据库问题后,我的眼镜掉了最近,ChatGPT火爆全网,介绍其产品、公司、作者、技术和应用等方面信息,占据着整个互联网,似乎不谈GPT好像 ... [详细]
  • 直击热门考点——结构体内存对齐
    原标题:直击热门考点——结构体内存对齐文章目录前言一、引例 ... [详细]
  • 给一个客户开发一个批量上传图片,并显示出来到分类信息模型内容里面,他做的是一个二手信息发布平台,也是本人开发的一个会员发布平台,因为,用的是织梦内核,所以,感觉不算难,但在二用织梦 ... [详细]
  • MySQL 的 NULL 值是怎么存储的?
    MySQL 的 NULL 值是怎么存储的? ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了PHP清洁输入相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 20210921c++ 继承,虚继承(内存结构)
    原标题:2021-09-21c++继承,虚继承(内存结构)普通的公有继承 ... [详细]
author-avatar
阜阳king
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有