elasticsearch学习(1)简单查询与聚合
elastic
被用作全文搜索、结构化搜索、分析以及这三个功能的组合
- 一个ElasticSearch集群可以包含多个索引,
- 每个索引包含多个类型
- 一个类型存储着多个文档
- 每个文档又有多个属性
索引(名词)
- 一个 索引 类似于传统关系数据库中的一个 数据库 , 是一个存储关系型文档的地方。 索引 (index) 的复数词为 indices 或
indexes 。
索引(动词)
- 索引一个文档 就是存储一个文档到一个 索引 (名词) 中以便它可以被检索和查询到。 这非常类似于 SQL语句中的 INSERT 关键词, 除
了文档已存在时新文档会替换旧文档情况之外
fliter
- 高效的执行结构化查询
query
- bool,match,must,about
- example
GET /megacorp/employee/_search
{
"query" : {
"match" : {
"about" : "rock climbing"
}
}
}
GET /megacorp/employee/_search
{
"query" : {
"bool": {
"must": {
"match" : {
"last_name" : "smith"
}
},
"filter": {
"range" : {
"age" : { "gt" : 30 }
}
}
}
}
}
- 全文搜索 about
相关性得分
Elasticsearch默认按照相关性得分排序, 即每个文档跟查询的匹配程度。
GET /megacorp/employee/_search
{
"query" : {
"match" : {
"about" : "rock climbing"
}
}
}
- terms 相当于MySQL中的group_by
GET /megacorp/employee/_search
{
"aggs": {
"all_interests": {
"terms": { "field": "interests" }
}
}
}
聚合搜索
- 桶 buckets 相当于MySQL的group
- 指标 Metrics 相当于聚合函数,count、max、min
GET /cars/transactions/_search
{
"size" : 0,
"aggs": {
"colors": {
"terms": {
"field": "color"
},
"aggs": {
"avg_price": {
"avg": {
"field": "price"
}
}
}
}
}
}
为度量新增 aggs 层。
为度量指定名字: avg_price 。
最后, 为 price 字段定义 avg 度量
- 按照日期中的月份聚合
GET /cars/transactions/_search
{
"size" : 0,
"aggs": {
"sales": {
"date_histogram": {
"field": "sold",
"interval": "month",
"format": "yyyy-MM-dd"
}
}
}
}
时间间隔要求是日历术语 (如每个 bucket 1 个月
- 处理返回数据时间间断
GET /cars/transactions/_search
{
"size" : 0,
"aggs": {
"sales": {
"date_histogram": {
"field": "sold",
"interval": "month",
"format": "yyyy-MM-dd",
"min_doc_count" : 0,
"extended_bounds" : {
"min" : "2014-01-01",
"max" : "2014-12-31"
}
}
}
}
}
这个参数强制返回空 buckets。
这个参数强制返回整年。
- cardinality 去重
GET /cars/transactions/_search
{
"size" : 0,
"aggs" : {
"distinct_colors" : {
"cardinality" : {
"field" : "color"
}
}
}
}
返回的结果表明已经售卖了三种不同颜色的汽车:
...
"aggregations": {
"distinct_colors": {
"value": 3
}
}
文档元数据
- _index 索引
一个 索引 应该是因共同的特性被分组到一起的文档集合。 例如, 你可能存储所有的产品在索引 products 中, 而存储所有销售的交易到
索引 sales 中。
虽然也允许存储不相关的数据到一个索引中, 但这通常看作是一个反模式的做法。
实际上, 在 Elasticsearch中, 我们的数据是被存储和索引在 分片 中, 而一个索引仅仅是逻辑上的命名空间, 这个命名空间由一个或者多
个分片组合在一起。
然而, 这是一个内部细节, 我们的应用程序根本不应该关心分片, 对于应用程序而言, 只需知道文档位于一个 索引
内。 Elasticsearch会处理所有的细节- _type 类型
数据可能在索引中只是松散的组合在一起, 但是通常明确定义一些数据中的子分区是很有用的。
例如, 所有的产品都放在一个索引中,
但是你有许多不同的产品类别, 比如 "electronics"、 "kitchen"和 "lawn-care"。
这些文档共享一种相同的(或非常相似) 的模式: 他们有一个标题、 描述、 产品代码和价格。 他们只是正好属于“产品”下的一些子类。
Elasticsearch公开了一个称为 types (类型) 的特性, 它允许您在索引中对数据进行逻辑分区。 不同 types 的文档可能有不同的字段, 但最好能够非常相似。- _id
ID 是一个字符串, 当它和 _index 以及 _type 组合就可以唯一确定 Elasticsearch中的一个文档。
当你创建一个新的文档, 要么提供自己
的 _id , 要么让 Elasticsearch帮你生成。
elasticsearch学习(1)简单查询与聚合的更多相关文章
- Elasticsearch使用系列-基本查询和聚合查询+sql插件
Elasticsearch使用系列-ES简介和环境搭建 Elasticsearch使用系列-ES增删查改基本操作+ik分词 Elasticsearch使用系列-基本查询和聚合查询+sql插件 Elas ...
- ElasticSearch中的简单查询
前言 最近修改项目,又看了下ElasticSearch中的搜索,所以简单整理一下其中的查询语句等.都是比较基础的.PS,好久没写博客了..大概就是因为懒吧.闲言少叙书归正传. 查询示例 http:// ...
- Java中使用elasticsearch搜索引擎实现简单查询、修改等操作-已在项目中实际应用
以下的操作环境为:jdk:1.8:elasticsearch:5.2.0 maven架包下载坐标为: <dependency> <groupId>org.elasticsear ...
- MongoDB学习day06--高级查询aggregate聚合管道和nodejs操作aggregate
一.MongoDB聚合管道(Aggregation Pilpeline) 使用聚合管道可以对集合中的文档进行变换和组合. 主要功能:表的关联查询.数据统计 二.aggregate 管道操作符与表达式 ...
- Elasticsearch学习(一)————简单命令
Elasticsearch一.简介**Elasticsearch 是一个分布式的搜索和分析引擎,可以用于全文检索.结构化检索和分析,并能将这三者结合起来.Elasticsearch 基于 Lucene ...
- Oracle学习之简单查询
使用scott用户下的表, 1.查询所有内容SELECT * FROM emp; 2.查询员工信息,包括员工编号,姓名,职位3个信息SELECT empno,ename,job FROM emp; 3 ...
- Elasticsearch学习笔记(三)聚合分析Agg
一.设置fielddata PUT /index/_mapping/type { "properties":{ "fieldName" ...
- Elasticsearch学习之多种查询方式
1. query string search 搜索全部商品:GET /ecommerce/product/_search took:耗费了几毫秒 timed_out:是否超时,这里是没有 _shard ...
- ElasticSearch 学习记录之ES几种常见的聚合操作
ES几种常见的聚合操作 普通聚合 POST /product/_search { "size": 0, "aggs": { "agg_city&quo ...
随机推荐
- 超级有用的git reset --hard和git revert命令
很多时候,git新手容易误操作,比如,在levelIISZ-1.4.dev分支下,运行了git pull idc cpp-1.0的结果,这样做麻烦很大,经常导致maven项目格式不正确,这个时候,可以 ...
- ssh连接超时问题解决方案,每一种方案都可以
1.服务端修改 vim /etc/ssh/sshd_config 修改 ClientAliveInterval 60 ClientAliveCountMax 40 60秒,向客户端发送一次请求. 超过 ...
- 在C#中实现listbox的项上下移动(winform) 标准
在C#中实现listbox的项上下移动(winform) 收藏人:梅毛子360 2013-10-02 | 阅:1 转:2 | 分享 | 来源 usi ...
- CSS盒子居中的常用的几种方法
第一种: 用css的position属性 <style type="text/css"> .div1 { width: 100px; height: 100px; bo ...
- 微信小程序图片选择,预览和删除
这里均用的是小程序原生api 废话不多说直接上栗子: <view class="addImv"> <!--这个是已经选好的图片--> <view wx ...
- HDU 3785 找寻大富翁
2019-06-06 08:30:03 坚持!!! 做这些水题,都觉得心累,特别是HDU的题,我PE了3发
- MySQL 批量插入值
MySQL 批量插入值 今天遇到个问题,需要从类似以下语句中的各个小括号[其实也有中括号等]抽取相关字段进行组合[相关规则,此处略去不提],并保存到数据库中,此时如果每次插入一条,会连续进行多次插入, ...
- 【BZOJ2595_洛谷4294】[WC2008]游览计划(斯坦纳树_状压DP)
上个月写的题qwq--突然想写篇博客 题目: 洛谷4294 分析: 斯坦纳树模板题. 简单来说,斯坦纳树问题就是给定一张有边权(或点权)的无向图,要求选若干条边使图中一些选定的点连通(可以经过其他点) ...
- Elasticsearch之CURL命令的UPDATE
对于,Elasticsearch之CURL命令的UPDATE包括局部更新和全部更新.可以去看我写的另一篇博客. Elasticsearch之更新(全部更新和局部更新) 总结: ES全部更新,使用PUT ...
- Java系列学习(四)-运算计算
1.运算符 (1)算术运算符 A:+,-,*,/,%,++,-- B:+的用法 [a.加法] [b.正号] [c.字符串连接付] C:/和%的区别 [数据做除法的时候,/取的是商,%取的是余数] D: ...