基本操作

操作索引

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使用(基本查询、聚合查询)相关推荐

  1. day08 外键字段的增删改查 正向反向插叙概念 跨表查询 聚合查询与分组查询 F查询

    day08 外键字段的增删改查 正向反向插叙概念 跨表查询 聚合查询与分组查询 F查询 昨日内容复习 自定义过滤器.标签.inclusion_tag 1.首先现在应用目录下创建名字为templatet ...

  2. mysql分页查询所有数据库_MySQL 数据库 分页查询/聚合查询

    引言 在本篇博客简单介绍一下分页查询以及聚合查询简单操做.html 分页查询 在MySQL中,分页查询通常都是使用limit子句实现,limit子句声明以下:mysql SELECT * FROM t ...

  3. MySQL 数据库 分页查询/聚合查询

    引言 在本篇博客简单介绍一下分页查询以及聚合查询简单操作. 分页查询 在MySQL中,分页查询一般都是使用limit子句实现,limit子句声明如下: SELECT * FROM table LIMI ...

  4. 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. ...

  5. ElasticSearch聚合查询Restful语法和JavaApi详解(基于ES7.6)

    本文收录于github和gitee ,里面有我完整的Java系列文章,学习或面试都可以看看 (一)概述 在前面关于ES的一系列文章中,已经介绍了ES的概念.常用操作.JavaAPI以及实际的一个小de ...

  6. Elasticsearch 入门(1):基本概念,安装教程,索引的创建,查询,删除,主键查询,修改,添加,聚合查询,条件查询

    Elasticsearch 入门 基本概念 The Elastic Stack, 包括 Elasticsearch.Kibana.Beats 和 Logstash(也称为 ELK Stack).能够安 ...

  7. Web框架之Django_05 模型层了解(单表查询、多表查询、聚合查询、分组查询)

    阅读目录 一.Django ORM 常用字段和参数: 二.单表查询 三.多表查询 基于双下划线的多表查询 四.聚合查询和分组查询 摘要: 单表查询 多表查询 聚合查询 分组查询 一.Django OR ...

  8. mongodb索引生成HTML页面,mongodb高阶:索引创建、聚合查询、复制集、分片、创建备份和部署...

    先前我们讨论了mongodb的进阶查询:投影查询.分页查询以及对查询结果进行排序,从本节起我们开始学习mongodb相关的高级技术,首先我们会讨论mongodb如何创建索引,索引是数据库中最重要的东西 ...

  9. MySQL~聚合查询与联合查询(多表查询、复合查询)

    目录 聚合查询 聚合函数 GROUP BY子句 HAVING 联合查询 内连接 外连接 自连接 子查询 单行子查询 多行子查询 合并查询 聚合查询 聚合函数 首先创建一个学生表,用来演示聚合函数的作用 ...

  10. 玩转MYSQL(2) 数据库的约束、聚合查询、联合查询以及三种表的设计

    目录标题 一.MYSQL的那些约束你掌握了几种? 二.表与表之间的三种关系 三.查询 3.1 :聚合查询 3.2.GROUP BY 3.3.HAVING和group by 搭配使用 3.4.联合查询 ...

最新文章

  1. 如何设计和管理AI产品?
  2. python数据类型详解
  3. java如何使显示字符下标_Java如何在 Word 中设置上、下标
  4. 新业态催生无人经济步入黄金发展期
  5. WCF、WebAPI、WCFREST、WebService之间的区别
  6. Python 删除满足条件的某些行
  7. cisco LAP upgrade to Fat AP
  8. !--more--搭建的博客设置主页内容高度
  9. Linux 查询股价工具,find 查找工具
  10. 服务器日志egl文件,【图片】Liddy's Linux编译日志(版本8.4)【蕾迪猫的linux吧】_百度贴吧...
  11. 身为程序员的我们......
  12. 理解 loss function : binary cross entropy
  13. RadAsm模板修改
  14. linux下下载fnl数据,使用python直接提取fnl再分析资料的气象因子数据
  15. IMPERVA-WAF 硬盘更换
  16. windows查看端口
  17. 基于遥感卫星影像水体提取方法综述
  18. 生意人告诉你闷声发大财的2个小技巧
  19. Java-----IO流
  20. python调用腾讯云API语音识别

热门文章

  1. 轻松易懂的CSS学习权威指南来了
  2. 用Java编写记事本
  3. 红外焦平面阵列调试传递函数测试方法
  4. 性能课程笔记(五)性能分析思路[转载高楼]
  5. 【OR】二次规划(1)
  6. 201919102004张雪婷(第五次作业)
  7. excel绝对引用与相对引用$
  8. 揭开Java上传下载功能的神秘面纱
  9. iOS16新特性及开发适配
  10. Hexo | yilia主题安装