1. Elasticsearch是什么?跟mysql的区别
ElasticSearch 是一个Java开发 基于Lucene 的 RESTful 风格的分布式的全文搜索引擎(Lucene是Apache基金会的一个开源全文检索引擎工具包)
ElasticSearch本质是搜索引擎,它通过建立反向索引的方式处理文档型数据,不具备通常数据库的事务、关联查询等等特性,你可以把它当作nosql来用。
MySQL是典型的关系型数据库
2. Elasticsearch中的类型都是什么?
数据类型
一级分类 | 二级分类 | 具体类型 |
---|---|---|
核心类型 | 字符串类型 | string text keyword |
整数类型 | integer long short byte | |
浮点类型 | double float half_float scaled_float | |
逻辑类型 | boolean | |
日期类型 | date | |
范围类型 | range | |
二进制类型 | binary | |
复合类型 | 数组类型 | array |
对象类型 | object | |
嵌套类型 | nested | |
地理类型 | 地理坐标类型 | geo_point |
地理地图 | geo_shape | |
特殊类型 | IP类型 | ip |
范围类型 | completion | |
令牌技术类型 | token_count | |
附件类型 | attachment | |
抽取类型 | percolator |
3. Elasticsearch怎么创建索引库,怎么删除索引库,怎么查看索引库
#创建索引库
PUT 索引库名称
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 2
}
}
#查看索引库
GET 索引库名称
#删除索引库
DELETE 索引库名称
#验证索引是否还存在
HEAD 索引库名称
4. Elasticsearch怎么创建映射,怎么查看映射,怎么删除映射
#创建映射
PUT /索引库名/_mapping/类型名称
{
"properties": {
"字段名": {
"type": "基本类型",
"index": true,//是否索引
"store": true,//是否存储
"analyzer": "分词器类型"
}
}
}
#查看映射
GET /索引库名/_mapping
#删除映射
DELETE /索引库名/_mapping
5. Elasticsearch怎么插入数据,怎么修改数据,怎么删除数据
#新增数据
POST /索引库名/类型名
{
"key":"value"
}
#查看数据
get _search
{
"query":{
"match_all":{}
}
}
#修改数据
PUT /索引库名/类型名/id
{
"要修改的字段":"修改后的内容"
}
#删除数据
DELETE /索引库名/类型名/id
6. Elasticsearch中搜索都有哪几种模式,分别介绍一下
查询所有(match_all)
匹配查询(match)
将查询条件进行分词 作为 多个词条 多个词条之间默认的关系是 OR
词条查询(term)
精确值匹配 精确值可以是数字 时间 布尔值 未分词的 字符串等等
布尔组合(bool)
其他的查询方式通过 must(&) must_not(!) should(|) 组合
范围查询(range)
查询指定区间内的 时间 或者 数字
模糊查询(fuzzy)
模糊查询 是 词条查询 的 模糊等价 模糊查询允许用户搜索词条 与 实际词条有较小偏差
偏差不能超过2
7. Elasticsearch中聚合是什么意思,桶是什么意思,度量是什么意思
聚合是独立的功能单元可以被混合在一起来满足你的需求
桶是指的是满足某个条件的文档集合。
度量是为某个桶中的文档计算得到的统计信息
8. 请写出一个聚合查询的语句,并解释含义
GET /索引库名/_search
{
"size" : 0,
"aggs":{
"avg_price": {
"avg": {
"field": "price" // 计算平均值
}
}
}
9. 请写出一个嵌套聚合查询的语句,并解释含义
GET /索引库名/_search
{
"size" : 0,
"aggs" : {
"popular_colors" : {
"terms" : {
"field" : "color"
},
"aggs":{
"avg_price": {
"avg": {
"field": "price"
}
},
/*
将 color 字段再次 粪桶
*/
"maker":{
"terms":{
"field":"make"
}
}
}
}
}
}
10. ElasticSearch中的端口号都有哪些,kibana是干什么的?
9300
9200
Kibana是一个基于Node.js的Elasticsearch索引库数据统计工具,可以利用Elasticsearch的聚合功能,生成各种图表,如柱形图,线状图,饼图等。
愿你走出前半生 归来仍是少年