es和kibana的docker安装


elasticsearch和kibana的docker安装和使用介绍

1、elasticsearch的介绍

与mysql对比

mysqles
数据库(database)索引(index)
表(table)_type(类型)在版本6.0.0中已过期

2、elasticsearch和kibana的安装

#### 1、compose文件
version: '3'
services:
 elasticsearch:
  image: docker.elastic.co/elasticsearch/elasticsearch:7.15.0
  ports:
   - "9200:9200"
   - "9300:9300"
   environment:
    - discovery.type=single-node
   volumes:
    - es-data:/usr/share/elasticsearch/data
    
 kibana:
  image: docker.elastic.co/kibana/kibana:7.15.0
  ports:
   - "5601:5601"
  environment:
   - "elasticsearch.hosts=http://elasticsearch:9200"
   - "xpack.monitor.ui.container.elasticsearch.enabled=true"
   - "i18n.locale=zh-CH"
   depends_on:
    - elasticsearch
volumes:
 es-data:

执行 docker compose -f installES-Kibana up -d

3、查询

1、索引文档

添加

PUT /customer/_doc/1
{
    "name":"john"
}

搜索

GET /customer/_doc/1
2、批量插入

下载数据,批量导入,数据目录 /usr/local/test/accounts.json

curl -H "Content-Type/application/json" -X POST "127.0.0.1:9200/bank/_bulk?pretty&refresh" --data-binary "@/usr/local/test/accounts.json"

查看导入状态

curl "127.0.0.1:9200/_cat/indices?v=true" | grep bank
3、查询所有数据
GET /bank/_search
{
    "query":{"match_all":{}},
    "sort":[
        {"account_number":"asc"}
    ]
}

查询结果字段解释

  • token :查询所耗费的时间(毫秒为单位)
  • timeout:搜索请求是否超时
  • _shards:搜索了多少个碎片,以及成功、失败、跳过了多少个碎片细目分类
  • max_score:找到的相关文档的分数
  • hits.total.value:找到了多少个匹配的文档
  • hits.sort:文档排序位置(不安相关性得分排序时)
  • hits.score:文档的相关性得分(使用match_all时不适用)
4、分页查询
GET /bank/_search
{
    "query":{"match_all":{}},
    "sort":[
        {"account_number":"asc"}
    ],
    "from":10,
    "size":10,
}
5、指定字段查询
GET /bank/_search
{
    "query":{"match":{"address":"mill lane"}},
    
}
  • 注意: 由于es底层是按照分词索引的,所以上述查询的结果是address字段中含有mill或者lane的数据
6、查询段落匹配

如果我们希望的是查询的字段address中包含mill lane时

GET /bank/_search
{
    "query":{"match_phrase":{"address":"mill lane"}}
}
7、多条件查询bool

查询年龄为40且不住在爱德华州的

GET /bank/_search
{
    "query":{
        "bool":{
            "must":[{
                "match":{"age":"40"}
            }],
            "must_not":[{
                "match":{"state":"ID"}
            }]
        }
    }
}
8、查询条件 query or filter
GET /bank/_search
{
    "query":{
        "bool":{
            "must":[{"match":{"state":"ND"}}],
            "filter":[{"term":{"age":"40"}},{"range":{"balance":{"gte":20000,"lte":30000}}}]
        }
    }
}

注意:query和filter的区别

  • 相同点: 两者都可以写查询
    • 不同点:query的上下文条件是用来给文档打分的,匹配的越好,_score分越高,filter条件只产生两种结果,符合和不符合,后者被过滤掉

只看含有filter的查询

GET /bank/_search
{
  "query":{
    "bool":{
      "filter":[
        {"term":{"age":"40"}},{"range":{"balance":{"lte":30000,"gte":20000}}}
        ]
    }
  }
}

注意:会发现查询结果中hits._score的值为0.0

4、聚合查询

在sql中有group by, 在elasticsearch中叫aggregation(聚合查询)

1、简单聚合

计算出每个州中account的数量,使用aggs关键字对state字段进行聚合,被聚合的字段无需对分词统计,所以使用state.keyword对整个字段统计

GET /bank/_search
{
  "size":0,
    "aggs":{
      "group_by_state":{
        "terms":{
          "field":"state.keyword"}
      }
    }
}

因为无需返回条件的具体数据,所以size=0

2、嵌套聚合

es还可以处理多个聚合条件的嵌套

接上个例子,计算每个州的平均结余,就是在state分组的基础上计算avg(balance)

GET /bank/_search
{
  "size":0,
  "aggs":{
    "group_by_state":{
      "terms":{
        "field":"state.keyword"
      },
      "aggs":{
        "average_balance":{
          "avg":{
            "field":"balance"
          }
        }
      }
    }
  }
}
3、对聚合结果排序

继续上个例子,对avg(balance)进行排序

GET /bank/_search
{
  "size":0,
  "aggs":{
    "group_by_state":{
      "terms":{
        "field":"state.keyword",
        "order":{"average_balance":"desc"}
      },
      "aggs":{
        "average_balance":{
          "avg":{
            "field":"balance"
          }
        }
      }
    }
  }
}

5、对索引的基本使用

查看索引的状态指令

curl localhost:9200/_cat/indices?v | grep user

1、创建索引
PUT /test-index-users
{
  "settings":{
    "number_of_shards":1,
    "number_of_replicas":1
  },
  "mappings":{
    "properties":{
      "name":{
        "type":"text",
        "fields":{
          "keyword":{
            "type":"keyword",
            "ignore_above":256
          }
        }
      },
      "age":{
        "type":"long"
      },
      "remarks":{
        "type":"text"
      }
    }
    }
}

注意:单机模式下无法创建副本,所以当number_of_replicas值不为零时,索引的状态为yellow,当把该值设置为零时,该索引状态为绿色

2、对索引添加数据
POST /test-index-users/_doc
{
  "name":"潘丽萍",
  "age":20,
  "remarks":"what"
}
3、修改索引的设置
PUT /test-index-users/_settings
{
  "settings":{
    "number_of_replicas":0
  }
}
4、关闭索引
POST  /test-index-users/_close

注意:索引关闭后不能再进行数据的插入和查询

5、打开索引
POST /test-index-users/_open

6、索引模板

模板介绍

模板类型:组件模板和索引模板

  • 组件模板:可重用的构建块,用于配置映射、设置和别名,不会直接应用于一组索引
  • 索引模板:是包含组件模板的集合,也可以直接指定映射、设置和别名

索引模板中的优先级

  • 可组合模板优先于旧模板,如果没有可组合模板匹配给定索引,旧模板仍然可以匹配并应用
  • 22
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值