ElasticSearch 7.1一些API的简单使用

ES 7.X 相比之前6.x版本最大的变化是不再有type的概念,不能再自建type,每个index提供了一个默认不可修改的type _doc

若公司有需求ES6.x升级到ES7.x官网提供了对应的解决方案。参考

https://www.elastic.co/guide/en/elasticsearch/reference/7.0/removal-of-types.html

以下操作基于kibana客户端,数据也是使用kiaba自带添加的数据。

1、获得集群的健康情况

GET /_cat/health?v

2、获取集群所有节点

GET /_cat/nodes?v

3、获取index 列表

GET /_cat/indices?v

4、是否设置缓存加锁(ES建议关闭缓存使用)

GET _nodes?filter_path=**.mlockall

5、创建index

PUT /customer

6、创建Document

PUT /custome/_doc/1?pretty

{

  "name":"john doe"

}

7、查看Document

GET /custome/_doc/1

8、删除index

DELETE /custome

9、创建文档

PUT /customer/_doc/1

{

  "name":"john doe"

}

10、查看文档

GET /customer/_doc/1

11、修改文档(覆盖)

POST /customer/_doc/1

{

  "name":"joan doe1"

}

12、修改文档(部分修改)

POST /customer/_update/1

{

  "doc":{

    "name":"joon doe"

    ,"age":5

  }

}

13、修改文档(使用脚本)

POST /customer/_update/1

{

  "script":"ctx._source.age +=5"

}

14、批量操作(注意格式)

POST /customer/_bulk

{"index":{"_id":"2"}}

{"name":"bulk1"}

{"update":{"_id":"2"}}

{"doc":{"age":21}}

15、queryString 查询

GET /kibana_sample_data_ecommerce/_search?q=*&sort=order_date:desc

16、使用 DSL查询(查询所有文档并按 order_id 降序排列,默认展示10个)

GET /kibana_sample_data_ecommerce/_search

{

  "query": {"match_all": {}}

  , "sort": [

    {

      "order_id": {

        "order": "desc"

      }

    }

  ]

}

17、查询所有文档,数量size限制为1

GET /kibana_sample_data_ecommerce/_search

{

  "query": {"match_all": {}}

  , "size": 1

}

18、查询所有文档的 "currency","order_id" 字段,展示 第10个开始后的10个文档

GET /kibana_sample_data_ecommerce/_search

{

  "query": {"match_all": {}}

  , "_source": ["currency","order_id"]

  , "from": 10

  , "size": 10

}

19、查询文档 匹配customer_full_name 字段前缀是 Eddie的

GET /kibana_sample_data_ecommerce/_search

{

  "query": {"match_phrase_prefix": {

    "customer_full_name": "Eddie"

  }}

}

20、查询文档 匹配customer_full_name字段中包含 Eddie 和Wolfe

GET /kibana_sample_data_ecommerce/_search

{

  "query": {

    "bool": {

      "must": [

        {"match": {

          "customer_full_name": "Eddie"

        }}

        ,{"match": {

          "customer_full_name": "Wolfe"

        }}

      ]

    }

  }

}

21、查询文档 匹配customer_full_name 包含 Eddie 或Wolfe

GET /kibana_sample_data_ecommerce/_search

{

  "query": {

    "bool": {

      "should": [

        {"match": {

          "customer_full_name": "Eddie"}

        }

        ,{"match": {

          "customer_full_name": "Wolfe"

        }}

      ]

    }

  }

}

22、查询文档 匹配customer_full_name中不包含Eddie

GET /kibana_sample_data_ecommerce/_search

{

  "query": {

    "bool": {

      "must_not": [

        {"match": {

           "customer_full_name": "Eddie"

        }}

      ]

    }

  }

}

23、查询文档 匹配customer_full_name 字段包含Eddie与不包含Wolfe的,且只查询customer_full_name字段

GET /kibana_sample_data_ecommerce/_search

{

  "query": {

    "bool": {

      "must": [

        {"match": {

          "customer_full_name": "Eddie"

        }}

      ]

      , "must_not": [

        {"match": {

         "customer_full_name": "Wolfe"

        }}

      ]

    }

  }

  ,"_source": "customer_full_name"

}

24、查询文档 匹配 customer_full_name包含Eddie并且taxful_total_price的值在50-100之间的

GET /kibana_sample_data_ecommerce/_search

{

  "query": {

    "bool": {

      "must": [

        {"match": {

          "customer_full_name": "Eddie"

        }}

      ]

      ,"filter": {

        "range": {

          "taxful_total_price": {

            "gte": 50,

            "lte": 100

          }

        }

      }

    }

  }

}

25、按照 day_of_week 分组展示20个 并且求 组内taxful_total_price与taxless_total_price的均值,组间按照taxful_total_price 的均值倒序排列

  size0 表示我们只在意分组统计结果,普通查询结果不关心。

GET /kibana_sample_data_ecommerce/_search

{

  "aggs": {

    "agg_by_day_of_week": {

      "terms": {

        "field": "day_of_week"

        ,"size": 20

        , "order": {

          "avg_taxful_total_price": "desc"

        }

      }

      , "aggs": {

        "avg_taxful_total_price": {

          "avg": {

                    "field": "taxful_total_price"

          }

        }

        ,"avg_taxless_total_price":{

          "avg": {

            "field": "taxless_total_price"

          }

        }

      }

    }

  }

  , "size": 0

}

26、total_quantity按区间进行分组,组内再按day_of_week 进行二次分组,再求二次分组后taxless_total_price的均值。

GET /kibana_sample_data_ecommerce/_search

{

  "size": 0

  , "aggs": {

    "agg_by_total_quantity": {

      "range": {

        "field": "total_quantity",

        "ranges": [

          {

            "from": 0,

            "to": 2

          }

          ,{

            "from": 2,

            "to": 4

          }

          ,{

            "from": 4

            , "to": 6

          }

        ]

      }

      , "aggs": {

        "agg_by_day_of_week": {

          "terms": {

            "field": "day_of_week"

          }

          , "aggs": {

            "avg_taxless_total_price": {

              "avg": {

                "field": "taxless_total_price"

              }

            }

          }

        }

      }

    }

  }

}

你可能感兴趣的:(ElasticSearch)