ElasticSearch基本使用

作者: 5473 分类: ELK 发布时间: 2017-11-17 16:41 阅读数:767

安装ElasticSearch

详见FileBeat+Redis+Logstash+Elasticsearch+Kibana搭建日志系统的安装ElasticSearch部分。

安装head插件

基础概念

  1. Index(索引) 含有相同属性的文档集合,类似于mysql中的database;索引只是一个逻辑上的空间,物理上是分为多个文件来管理的;索引名称必须全小写。
  2. Type(类型) 类似于mysql中的table,根据用户需求每个index中可以新建任意数量的type。
  3. Document(文档) 可以被索引的基本数据单位,对应mysql中的row。有点类似于MongoDB中的文档结构,每个Document是一个json格式的文本。
  4. Mapping 定义Type的字段处理规则,即索引如何建立、索引类型、是否保存原始索引JSON文档、是否压缩原始JSON文档、是否需要分词处理、如何进行分词处理等。
  5. Cluster(集群) 许多互相合作的ES服务器集合。
  6. Node(节点) 形成集群的每个服务器称为节点。
  7. Shards(分片) 为每个索引提供水平的扩展;分割单个index到集群的各个节点;在新建索引时,可以手动定义每个索引分片的数量,默认情况下,每个索引会分配5个分片。
  8. Replicas(副本) 副本是一个分片的精确复制,每个分片可以有零个或多个副本。

基本用法(Restful API)

官方文档 https://www.elastic.co/guide/en/elasticsearch/reference/current/docs.html

API基本格式 http://<ip>:<port>/<索引>/<类型>/<文档id>
HTTP动词 GET/PUT/POST/DELETE

  1. 创建索引curl -XPUT 'http://<ip>:<port>/<索引名>'
    方法1:通过head插件。

    方法2:通过Postman等Http请求模拟工具


  2. 插入文档
    指定ID:(curl -XPUT 'http://<ip>:<port>/<索引名>/<类型名>/<文档ID>' -d ' { "name": "John Doe" }'

    自动ID:(curl -XPOST 'http://<ip>:<port>/<索引名>/<类型名>' -d ' { "name": "Tom" }'


  3. 修改文档curl -XPOST 'http://<ip>:<port>/<索引名>/<类型名>/<文档ID>/_update' -d ' { "name": "John Doe New","age":"12" }'


  4. 删除文档
    单个删除:(curl -XDELETE 'http://<ip>:<port>/<索引名>/<类型名>/<文档ID>'
    条件删除:(curl -XPOST 'http://<ip>:<port>/<索引名>/<类型名>/_delete_by_query' -d ' { "query":{ "match":{ "name":"Tom" }} }'


  5. 简单查询
    单个查询:(curl -XGET 'http://<ip>:<port>/<索引名>/<类型名>/<文档ID>'
    全部查询:(curl -XPOST 'http://<ip>:<port>/<索引名>/<类型名>/_search' -d ' { "query":{ "match_all":{}} }'
    查询前2条:(curl -XPOST 'http://:/<索引名>/<类型名>/_search' -d ' { "query":{ "match_all":{} },"from":1,"size":2}'
    查询name包含’John’的文档:(curl -XPOST 'http://:/<索引名>/<类型名>/_search' -d ' { "query":{ "match":{ "name":"John" } },"from":1,"size":2}'
    以ID降序:(curl -XPOST 'http://:/<索引名>/<类型名>/_search' -d ' {"query": { "match_all": {} },"sort": { "_uid": { "order": "desc" }}}

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注