ES(四)ES使用(基本查询、聚合查询)
基本操作
操作索引
1.新建索引
curl -XPUT localhost:9200/index01
2.查看索引
curl -XGET http://192.168.168.101:9200/index01/_settings
curl -XGET http://192.168.168.101:9200/index01,blog/_settings
3.删除索引
curl -XDELETE http://192.168.168.101:9200/index02
4.打开关闭索引
curl -XPOST http://192.168.168.101:9200/index01/_close
curl -XPOST http://192.168.168.101:9200/index01/_open
文档管理
1.新建文档
curl -XPUT -d ‘{‘id’:1,‘title’:‘es简介’}’ http://localhost:9200/index01/article/1
2.获取文档
curl -XGET http://192.168.168.101:9200/index01/article/1
3.删除文档
curl -XDELETE http://192.168.168.101:9200/index01/article/1
查询操作
类Lucene查询
_exists_:execution_completed_time
__type:company_extended_business
weibo_type:18 OR weibo_type:24 OR weibo_type:25
NOT company_id:442966
first_consume_time:{'2019-01-03 00:00:00' TO '2019-01-03 00:00:00'}
基本查询
指定请求头
–header “content-Type:application/json”
准备数据
curl -XPUT -d '{"id":1,"title":"es简介","content":"es好用好用真好用"}' http://192.168.168.101:9200/index01/article/1
curl -XPUT -d '{"id":1,"title":"java编程思想","content":"这就是个工具书"}' http://192.168.168.101:9200/index01/article/2
curl -XPUT -d '{"id":1,"title":"大数据简介","content":"你知道什么是大数据吗,就是大数据"}' http://192.168.168.101:9200/index01/article/3
term query
curl -XGET http://192.168.168.101:9200/index01/_search -d {'query':{'term':{'title':'你好'}}}
查询的字段只有一个值得时候,应该使用term而不是terms,在查询字段包含多个的时候才使用terms,使用terms语法,json中必须包含数组
match在匹配时会对所查找的关键词进行分词,然后按分词匹配查找,而term会直接对关键词进行查找。一般**模糊查找的时候,多用match,而精确查找时可以使用term
terms query
{'query':{'terms':{'tag':["search",'nosql','hello']}}
}
match query
{'query':{'match':{'title':'你好'}}}{"query": {"match": {"__type": "info"}},"sort": [{"campaign_end_time": {"order": "desc"}}]
}
match_all
{'query':{'match_all':{'title':'标题一样'}}}
multi match
多值匹配查询
{"query": {"multi_match": {"query": "运动 上衣","fields": ["brandName^100","brandName.brandName_pinyin^100","brandName.brandName_keyword^100","sortName^80","sortName.sortName_pinyin^80","productName^60","productKeyword^20"],"type": <multi-match-type>,"operator": "AND"}}
}
Bool query
bool查询包含四个子句,must,filter,should,must_not
{'query':{'bool':{'must':[{'term':{'_type':{'value':'age'}}},{'term':{'account_grade':{'value':'23'}}}]}}}{"bool":{"must":{"term":{"user":"lucy"}},"filter":{"term":{"tag":"teach"} },"should":[{"term":{"tag":"wow"}},{"term":{"tag":"elasticsearch"}}],"mininum_should_match":1,"boost":1.0 }
}
Filter query
query和filter的区别:query查询的时候,会先比较查询条件,然后计算分值,最后返回文档结果;而filter是先判断是否满足查询条件,如果不满足会缓存查询结果(记录该文档不满足结果),满足的话,就直接缓存结果
filter快在:对结果进行缓存,避免计算分值
{"query": {"bool": {"must": [{"match_all": {}}],"filter": {"range": {"create_admin_id": {"gte": 10,"lte": 20}}}}}
}
range query
{'query':{'range':{'age':{'gte':'30','lte':'20'}}}
}
通配符查询
{'query':{'wildcard':{'title':'cr?me'}}}
正则表达式查询
{'query':{'regex':{'title':{'value':'cr.m[ae]','boost':10.0}}}
}
前缀查询
{'query':{'match_phrase_prefix':{'title':{'query':'crime punish','slop':1}}}
}
query_string
{'query':{'query_string':{'query':'title:crime^10 +title:punishment -otitle:cat +author:(+Fyodor +dostoevsky)'}}
}
聚合查询
聚合提供了用户进行分组和数理统计的能力,可以把聚合理解成SQL中的GROUP BY和分组函数
指标聚合/桶聚合
Metrics(度量/指标):简单的对过滤出来的数据集进行avg,max操作,是一个单一的数值
Bucket(桶):将过滤出来的数据集按条件分成多个小数据集,然后Metrics会分别作用在这些小数据集上
max/min/avg/sum/stats
{'aggs':{c'group_sum':{'sum':{'field':'money'}}}
}{"aggs":{"avg_fees":{"avg":{"field":"fees"}}}
}
terms聚合
terms根据字段值项分组聚合.field按什么字段分组,size指定返回多少个分组,shard_size指定每个分片上返回多少个分组,order排序方式.可以指定include和exclude正则筛选表达式的值,指定missing设置缺省值
{'aggs':{'group_by_type':{'terms':{'field':'_type'}}}
}{"size": 0, "aggs": {"terms":{"terms": {"field": "__type","size": 10}}}
}
{"size": 0, "aggs": {"terms":{"terms": {"field": "__type","size": 10,"order": {"_count": "asc"}}}}
}
{"size": 0, "aggs": {"agg_terms": {"terms": {"field": "cost","order": {"_count": "asc"}},"aggs": {"max_balance": {"max": {"field": "cost"}}}}}
}
{"size": 0, "aggs": {"agg_terms": {"terms": {"field": "cost","include": ".*","exclude": ".*"}}}
}
cardinality去重
{"size": 0, "aggs": {"count_type": {"cardinality": {"field": "__type"}}}
}
cardinality
percentiles百分比
percentiles对指定字段(脚本)的值按从小到大累计每个值对应的文档数的占比(占所有命中文档数的百分比),返回指定占比比例对应的值。默认返回[ 1, 5, 25, 50, 75, 95, 99 ]分位上的值
{"size": 0, "aggs": {"age_percents":{"percentiles": {"field": "age","percents": [1,5,25,50,75,95,99]}}}
}{"size": 0,"aggs": {"states": {"terms": {"field": "gender"},"aggs": {"banlances": {"percentile_ranks": {"field": "balance","values": [20000,40000]}}}}}
percentiles rank
统计小于等于指定值得文档比
{"size": 0, "aggs": {"tests": {"percentile_ranks": {"field": "age","values": [10,15]}}}
}
filter聚合
filter对满足过滤查询的文档进行聚合计算,在查询命中的文档中选取过滤条件的文档进行聚合,先过滤在聚合
{"size": 0, "aggs": {"agg_filter":{"filter": {"match":{"gender":"F"}},"aggs": {"avgs": {"avg": {"field": "age"}}}}}
}
filtters聚合
多个过滤组聚合计算
{"size": 0, "aggs": {"message": {"filters": {"filters": {"errors": {"exists": {"field": "__type"}},"warring":{"term": {"__type": "info"}}}}}}
}
range聚合
{"aggs": {"agg_range": {"range": {"field": "cost","ranges": [{"from": 50,"to": 70},{"from": 100}]},"aggs": {"bmax": {"max": {"field": "cost"}}}}}
}
date_range聚合
{"aggs": {"date_aggrs": {"date_range": {"field": "accepted_time","format": "MM-yyy", "ranges": [{"from": "now-10d/d","to": "now"}]}}}
}
date_histogram
时间直方图聚合,就是按天、月、年等进行聚合统计。可按 year (1y), quarter (1q), month (1M), week (1w), day (1d), hour (1h), minute (1m), second (1s) 间隔聚合或指定的时间间隔聚合
{ "aggs": {"sales_over_time": {"date_histogram": {"field": "accepted_time","interval": "quarter","min_doc_count" : 0, //可以返回没有数据的月份"extended_bounds" : { //强制返回数据的范围"min" : "2014-01-01","max" : "2014-12-31"}}}}
}
missing聚合
{ "aggs": {"account_missing": {"missing": {"field": "__type"}}}
}
LogStash操作
启动logStash
logstash -e ‘input{stdin{}}output{stdout{codec=>rubydebug}}’
IK分词器
curl -XPOST http://192.168.168.101:9200/_analyze -d ‘{“analyzer”:“ik”,“text”:“JAVA编程思想”}’
http://192.168.168.101:9200/index01/_analyze?analyzer=ik&text=%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD
IK分词器
curl -XPUT -d ‘{“id”:1,“kw”:“我们都爱中华人民共和国”}’ http://192.168.168.101:9200/haha1/haha/1
Mapping
查看mapping
curl -XGET http://192.168.168.101:9200/jtdb_item/tb_item/_mapping
个人微信公众号【码农峰】,每天推送最新行业资讯,每周推送原创技术文章,欢迎关注。
ES(四)ES使用(基本查询、聚合查询)相关推荐
- day08 外键字段的增删改查 正向反向插叙概念 跨表查询 聚合查询与分组查询 F查询
day08 外键字段的增删改查 正向反向插叙概念 跨表查询 聚合查询与分组查询 F查询 昨日内容复习 自定义过滤器.标签.inclusion_tag 1.首先现在应用目录下创建名字为templatet ...
- mysql分页查询所有数据库_MySQL 数据库 分页查询/聚合查询
引言 在本篇博客简单介绍一下分页查询以及聚合查询简单操做.html 分页查询 在MySQL中,分页查询通常都是使用limit子句实现,limit子句声明以下:mysql SELECT * FROM t ...
- MySQL 数据库 分页查询/聚合查询
引言 在本篇博客简单介绍一下分页查询以及聚合查询简单操作. 分页查询 在MySQL中,分页查询一般都是使用limit子句实现,limit子句声明如下: SELECT * FROM table LIMI ...
- 2019-7-27 [MySQL] DQL 简单查询[别名/去重/运算] 条件查询 排序查询 聚合查询 分组查询 导出与导入 多表操作[一对多/多对多][创外键 创联合主键 约束 添加 删除 测试]
文章目录 5 SQL语句(DQL) 5.1DQL准备工作和语法 5.1.1准备工作 5.1.2 DQL语法: 5.2 简单查询 5.2.1 查询所有的商品 5.2.2 查询商品名和商品价格. 5.2. ...
- ElasticSearch聚合查询Restful语法和JavaApi详解(基于ES7.6)
本文收录于github和gitee ,里面有我完整的Java系列文章,学习或面试都可以看看 (一)概述 在前面关于ES的一系列文章中,已经介绍了ES的概念.常用操作.JavaAPI以及实际的一个小de ...
- Elasticsearch 入门(1):基本概念,安装教程,索引的创建,查询,删除,主键查询,修改,添加,聚合查询,条件查询
Elasticsearch 入门 基本概念 The Elastic Stack, 包括 Elasticsearch.Kibana.Beats 和 Logstash(也称为 ELK Stack).能够安 ...
- Web框架之Django_05 模型层了解(单表查询、多表查询、聚合查询、分组查询)
阅读目录 一.Django ORM 常用字段和参数: 二.单表查询 三.多表查询 基于双下划线的多表查询 四.聚合查询和分组查询 摘要: 单表查询 多表查询 聚合查询 分组查询 一.Django OR ...
- mongodb索引生成HTML页面,mongodb高阶:索引创建、聚合查询、复制集、分片、创建备份和部署...
先前我们讨论了mongodb的进阶查询:投影查询.分页查询以及对查询结果进行排序,从本节起我们开始学习mongodb相关的高级技术,首先我们会讨论mongodb如何创建索引,索引是数据库中最重要的东西 ...
- MySQL~聚合查询与联合查询(多表查询、复合查询)
目录 聚合查询 聚合函数 GROUP BY子句 HAVING 联合查询 内连接 外连接 自连接 子查询 单行子查询 多行子查询 合并查询 聚合查询 聚合函数 首先创建一个学生表,用来演示聚合函数的作用 ...
- 玩转MYSQL(2) 数据库的约束、聚合查询、联合查询以及三种表的设计
目录标题 一.MYSQL的那些约束你掌握了几种? 二.表与表之间的三种关系 三.查询 3.1 :聚合查询 3.2.GROUP BY 3.3.HAVING和group by 搭配使用 3.4.联合查询 ...
最新文章
- 如何设计和管理AI产品?
- python数据类型详解
- java如何使显示字符下标_Java如何在 Word 中设置上、下标
- 新业态催生无人经济步入黄金发展期
- WCF、WebAPI、WCFREST、WebService之间的区别
- Python 删除满足条件的某些行
- cisco LAP upgrade to Fat AP
- !--more--搭建的博客设置主页内容高度
- Linux 查询股价工具,find 查找工具
- 服务器日志egl文件,【图片】Liddy's Linux编译日志(版本8.4)【蕾迪猫的linux吧】_百度贴吧...
- 身为程序员的我们......
- 理解 loss function : binary cross entropy
- RadAsm模板修改
- linux下下载fnl数据,使用python直接提取fnl再分析资料的气象因子数据
- IMPERVA-WAF 硬盘更换
- windows查看端口
- 基于遥感卫星影像水体提取方法综述
- 生意人告诉你闷声发大财的2个小技巧
- Java-----IO流
- python调用腾讯云API语音识别