1. 什么是聚合(Aggregation)
1.1 集合的分类
- Bucket Aggregation :一些列满足特定条件的文档的集合
- Metric Aggregation :一些数学运算,可以对文档字段进行统计分析
- Pipeline Aggregation :对其他的聚合结果进行二次聚合
- Matrix Aggregration : 支持对多个字段的操作并提供一个结果矩阵
1.2 Bucket & Metric
1.2.1 Bucket
1.2.2 Metric
1.2.3 Bucket Demo
1.2.4 Bucket & Metric Demo
价格统计信息+天气信息
自我测试
- 判断题:ES支持使用HTTP PUT 写入新文档,并通过Elasticsearch 生成文档ID
- 判断题:Update 一个文档,需要使用HTTP PUT
- 判断题:Index 一个已存在的文档,旧的文档会先被删除,新的文档再被写入,同时版本号加一
- 尝试描述创建一个新的文档到一个不存在的索引中,背后会发生一些什么?
- ES 7 中的合法的type是什么?
- 精确值和全文的本质区别是什么?
- Analyzer由那几部分组成?
- 尝试描述match 和 match_phrase的区别?
- 如果你希望match_phrase匹配到更多的结果,你应该配置查询中什么参数?
- 如果Mapping 的dynamic 设置成strict,索引一个包含新增字段的文档时会发生什么?
- 判断题:可以把一个字段的类型从 integer 改成 long ,因为这两个类型是兼容的?
- 判断题:你可以在Mapping 文件中为indexing和searching指定不同的analyzer?
- 判断题: 字段类型为Text的字段,一定一个被全文搜索
答案
- 错,需要用POST 命令创建
- 错,Update 文档,使用POST,PUT只能用来做 Mapping 或者 Create
- 对
- 默认情况下,会创建相应的索引,并且自己设置Mapping,当然,实际情况还是要看是否有合适的Index Template
- _doc
- 精确值不会被分词,全文本会
- 三部分:Character Filter+ Tokenizer + Token Filter
- Match 中的terms之间是or的关系,Match Phrase 的terms 之间是and的关系,并且term之间位置关系也影响搜索结果
- slop
- 直接报错
- 错。字段类型修改,需要重新reindex
- 对 可以在Mapping 中为index 和 search 指定不同的analyzer
- 错 可以通过为 text类型的字段指定 Not Indexed 使其无法被搜索