• Elasticsearch 入门


    主要概念与mysql对比

     

    对于HTTP方法,具体作用

    HTTP方法操作说明
    GET 获取请求对象的当前状态
    POST 改变对象的当前状态
    PUT 创建一个对象
    DELETE 销毁对象
    HEAD   请求获取对象的基础信息

    增删改查

    以下在Kibana的Dev Tools里执行

    PUT /account/info/1
    {
        "price": 10000,
        "color": "红色",
        "make": "汉兰达",
        "sold": "2014-10-28"
    }

    删除id=4的记录

    DELETE /account/info/1

    删不了/settle/jingyi

    删settle索引

    DELETE /account

    POST /account/info/1/_update
    {
    "doc": {"color": "黑色"}
    }

    GET /account/int/1

    批量插入

    POST /account/info/_bulk
    { "index": {}}
    { "price" : 20000, "color" : "红色", "make" : "汉兰达", "sold" : "2014-11-05" }
    { "index": {}}
    { "price" : 30000, "color" : "绿色", "make" : "福特", "sold" : "2014-05-18" }
    { "index": {}}
    { "price" : 15000, "color" : "蓝色", "make" : "丰田", "sold" : "2014-07-02" }
    { "index": {}}
    { "price" : 12000, "color" : "绿色", "make" : "丰田", "sold" : "2014-08-19" }
    { "index": {}}
    { "price" : 20000, "color" : "红色", "make" : "汉兰达", "sold" : "2014-11-05" }
    { "index": {}}
    { "price" : 80000, "color" : "红色", "make" : "宝马", "sold" : "2014-01-01" }
    { "index": {}}
    { "price" : 25000, "color" : "蓝色", "make" : "福特", "sold" : "2014-02-12" }

    怎么获取单条记录呢?

    统计应用

    统计每种颜色的数量

    类似mysql语句: select color, count(*)  from info group by color;

    GET account/info/_search
    {
        "size": 0,           【3】
        "aggs": {            【1】
          "SalesNum": {      【2】
            "terms": {       【4】
              "field": "color.keyword",
              "size": 10
            }
          }
        }
    }

    注释

    【1】:如果想要进行统计分析,统计代码需要写在aggs中,aggs是aggregations 的简称,也可以写作 aggregations。

    【2】:是指定的列的名称,作用同SQLSERVER统计中as 重命名。

    【3】:这里设置了返回值为0,因为这个查询不仅仅返回了我们的统计的内容,还返回了搜索结果的内容,这里我们并不需要搜索结果的内容,所以设置为0.

    【4】:这里定义了桶的类型,如果需要不同的统计内容,这些需要使用不同的统计类型。

    结果

    {
      "took" : 21,
      "timed_out" : false,
      "_shards" : {
        "total" : 5,
        "successful" : 5,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : 8,
        "max_score" : 0.0,
        "hits" : [ ]
      },
      "aggregations" : {
        "SalesNum" : {
          "doc_count_error_upper_bound" : 0,
          "sum_other_doc_count" : 0,
          "buckets" : [
            {
              "key" : "红色",
              "doc_count" : 3
            },
            {
              "key" : "绿色",
              "doc_count" : 2
            },
            {
              "key" : "蓝色",
              "doc_count" : 2
            },
            {
              "key" : "黑色",
              "doc_count" : 1
            }
          ]
        }
      }
    }

    统计每种颜色的平均价格

    类似mysql: select color, avg(price) from info group by color;

    GET account/info/_search
    {
      "size": 0,
      "aggs": {
        "s": {
          "terms": {
            "field": "color.keyword",
            "size": 10
          },
          "aggs": {
            "avg_price": {
              "avg": {
                "field": "price"
              }
            }
          }
        }
      }
    }

    结果

    {
      "took" : 13,
      "timed_out" : false,
      "_shards" : {
        "total" : 5,
        "successful" : 5,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : 8,
        "max_score" : 0.0,
        "hits" : [ ]
      },
      "aggregations" : {
        "s" : {
          "doc_count_error_upper_bound" : 0,
          "sum_other_doc_count" : 0,
          "buckets" : [
            {
              "key" : "红色",
              "doc_count" : 3,
              "avg_price" : {
                "value" : 40000.0
              }
            },
            {
              "key" : "绿色",
              "doc_count" : 2,
              "avg_price" : {
                "value" : 21000.0
              }
            },
            {
              "key" : "蓝色",
              "doc_count" : 2,
              "avg_price" : {
                "value" : 20000.0
              }
            },
            {
              "key" : "黑色",
              "doc_count" : 1,
              "avg_price" : {
                "value" : 10000.0
              }
            }
          ]
        }
      }
    }

    统计每一个企业品牌的最低价格和最高价格

    类似mysql 语句: select make, min(price), max(price) from info group by make;

    GET account/info/_search
    {
      "size": 0
      ,"aggs": {
        "make": {
          "terms": {
            "field": "make.keyword"
          },
          "aggs": {
            "price_age": {
              "avg": {
                "field": "price"
              }
            },
            "min_price": {
              "min": {
                "field": "price"
              }
            },
            "max_price":{
              "max": {
                "field": "price"
              }
            }
          }
        }
      }
    }

    结果

    {
      "took" : 3,
      "timed_out" : false,
      "_shards" : {
        "total" : 5,
        "successful" : 5,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : 8,
        "max_score" : 0.0,
        "hits" : [ ]
      },
      "aggregations" : {
        "make" : {
          "doc_count_error_upper_bound" : 0,
          "sum_other_doc_count" : 0,
          "buckets" : [
            {
              "key" : "汉兰达",
              "doc_count" : 3,
              "max_price" : {
                "value" : 20000.0
              },
              "min_price" : {
                "value" : 10000.0
              },
              "price_age" : {
                "value" : 16666.666666666668
              }
            },
            {
              "key" : "丰田",
              "doc_count" : 2,
              "max_price" : {
                "value" : 15000.0
              },
              "min_price" : {
                "value" : 12000.0
              },
              "price_age" : {
                "value" : 13500.0
              }
            },
            {
              "key" : "福特",
              "doc_count" : 2,
              "max_price" : {
                "value" : 30000.0
              },
              "min_price" : {
                "value" : 25000.0
              },
              "price_age" : {
                "value" : 27500.0
              }
            },
            {
              "key" : "宝马",
              "doc_count" : 1,
              "max_price" : {
                "value" : 80000.0
              },
              "min_price" : {
                "value" : 80000.0
              },
              "price_age" : {
                "value" : 80000.0
              }
            }
          ]
        }
      }
    }

    参考

    https://www.cnblogs.com/Rawls/p/10316689.html

  • 相关阅读:
    排序算法总结
    设计模式---(简单工厂模式,工厂模式,抽象工程模式),单例模式,代理模式,装饰器
    网易编程题——牛牛的闹钟
    Python + sqlalchemy + Pandas + Mysql 实现自动创建表,插入数据
    cucumber
    加油
    重新学习python爬虫
    python 网址
    《高兴》 贾平凹 摘抄
    funny python
  • 原文地址:https://www.cnblogs.com/kaituorensheng/p/12499975.html
Copyright © 2020-2023  润新知