美文网首页Search微服务
一文学会ES的API接口

一文学会ES的API接口

作者: sknfie | 来源:发表于2021-06-20 12:01 被阅读0次

    概述

    Elasticsearch 是面向文档型数据库,这意味着它存储的是整个对象或者文档,不但会存储它们,还会为他们建立索引,这样你就可以搜索他们了。
    我们可以在 Elasticsearch 中索引、搜索、排序和过滤这些文档。不需要成行成列的数据。这将会是完全不同的一种面对数据的检索方式,这也是为什么 Elasticsearch 可以执行复杂的全文搜索的原因。

    ES与DB的区别

    在 Elasticsearch 中,文档属于一种 类型(type),各种各样的类型存在于一个 索引 中。你也可以通过类比传统的关系数据库得到一些大致的相似之处:


    ES与DB的区别

    Restful API使用

    可以在curl后加-i参数得到响应头

    curl -i -XGET http://localhost:9200/website/blog/124?pretty
    

    使用postman进行的一些简单操作,kibana会有些差异,但不大

    1.查看集群健康状况
    GET /_cat/health?v&pretty
     
    2.查看my_index的mapping和setting的相关信息
    GET /my_index?pretty
     
    3.查看所有的index
    GET /_cat/indices?v&pretty
    创建只有一个主分片,没有复制分片的小索引。
     
    PUT /my_temp_index
    {
      "settings": {
      "number_of_shards" : 1,
      "number_of_replicas" : 0
      }
    }
    

    用 update-index-settings API 动态修改复制分片个数:

    PUT /my_temp_index/_settings
    {
     "number_of_replicas": 1
    }
    

    删除索引

    DELETE /my_index
    删除多个索引
    DELETE /index_one,index_two
    DELETE /index_*
    删除多个索引
    DELETE /_all
    

    只得到_source字段而不要其他的元数据,你可以这样请求

    GET /website/blog/123/_source
    
    //创建索引用put  ip:9200/person
    {
        "settings":{
            "number_of_shards":3,
            "number_of_replicas":1
        },
        "mappings":{
            "man":{
                "properties":{
                    "name":{
                        "type":"text"
                    },
                    "age":{
                        "type":"integer"
                    }
                }
            }
        }
    }
    //手动id添加文档put(其实走的是修改)    ip:9200/person/man/1
    {
        "name":"111",
        "age":11
    }
     
    //自动id添加文档post    ip:9200/person/man
    {
        "name":"111",
        "age":11
    }
     
    //doc修改post  ip:9200/person/man/1/_update
    {
        "doc":{
            "name":"大大阿达"
        }
    }
     
    //脚本修改post  ip:9200/person/man/1/_update
    {
        "script":"painless",
        "inline":"ctx._source.name = 'zzzzz'",
        "inlines":"ctx._dource.nname = params.name",
        "parames":{
            "name":"newName"
        }
    }
     
    //删除文档delete  ip:9200/person/man/1
    //删除索引delete  ip:9200/person(无法删除类型)
     
     
    //根据id查询文档get  ip:9200/person/man/1
     
    //根据条件查询分页 排序post ip:9200/person/man/_search
    {
        "query":{
            "match":{
                "name":"zzz"
            },
            "from":1,
            "size":5,
            "sort":[
                    "age":{
                        "order":"desc"
                    }
                ]
        }
    }
     
    //查询全部  post ip:9200/person/man/_search
    {
        "query":{
            "match_all":{}
        }
    }
     
    //分组查询post  ip:9200/person/man/_search
    {
        "aggs":{
            "group_by_age":{
                "terms":{
                    "field":"age"
                }
            }
        }
    }
     
    //聚合 多行函数(也可单个max,min) post ip:9200/person/man/_search
    {
        "aggs":{
            "many_function":{
                "stats":{
                    "field":"age"
                }
            }
        }
    }
    

    以上是对es的一些梳理

    相关文章

      网友评论

        本文标题:一文学会ES的API接口

        本文链接:https://www.haomeiwen.com/subject/zyajyltx.html