• es的一些实用案例


    表结构:

    GET ehirestate/_mapping

    {
      "ehirestate" : {
        "mappings" : {
          "ehire" : {
            "properties" : {
              "activeTime" : {
                "type" : "long"
              },
              "ctmId" : {
                "type" : "integer"
              },
              "date" : {
                "type" : "integer"
              },
              "downloadCount" : {
                "type" : "long"
              },
              "inboxExport" : {
                "type" : "long"
              },
              "inboxSearch" : {
                "type" : "long"
              },
              "inboxView" : {
                "type" : "long"
              },
              "loginCount" : {
                "type" : "long"
              },
              "otherView" : {
                "type" : "long"
              },
              "resumeSearch" : {
                "type" : "long"
              },
              "resumeTemDown" : {
                "type" : "long"
              },
              "resumeView" : {
                "type" : "long"
              },
              "userId" : {
                "type" : "integer"
              }
            }
          }
        }
      }
    }

    实例一:

    功能:1- 对用户userId进行装桶,对resumeView进行聚合后排序;

         2- 对date进行范围性匹配;

       3- 对会员ctmid进行精确匹配;

       4- 返回结果是聚合后的loginCount和resumeView

    查询语句:

    GET ehirestate/_search?size=0
    {
      "query": {
        "bool" : {
          "filter" : [
            {
              "term" : {
                "ctmId" : {
                  "value" : 1475127
                }
              }
            },
            {
              "range": {
                "date": {
                  "gte": 20191201,
                  "lte": 20191231
                }
              }
            }
          ]
        }
      }, 
      "aggs": {
        "father": {
          "terms": {
            "field": "userId",
            "size": 1, 
    "order": { "child": "desc"
    } }, "aggs": { "child": { "sum": { "field": "resumeView" } }, "loginCount":{ "sum": { "field": "loginCount" } } } } } }

    返回结果:

    {
      "took" : 2,
      "timed_out" : false,
      "_shards" : {
        "total" : 2,
        "successful" : 2,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : 339,
        "max_score" : 0.0,
        "hits" : [ ]
      },
      "aggregations" : {
        "father" : {
          "doc_count_error_upper_bound" : -1,
          "sum_other_doc_count" : 338,
          "buckets" : [
            {
              "key" : 6231765,
              "doc_count" : 1,
              "loginCount" : {
                "value" : 3.0
              },
              "child" : {
                "value" : 476.0
              }
            }
          ]
        }
      }
    }

    功能二:

    对聚合后的排序后取出对应的文档数据

    查询语句:

    GET ehirestate/_search
    {
      "query": {
        "bool": {
          "filter": [
            {
              "term": {
                "ctmId": {
                  "value": 1475127
                }
              }
            },
            {
              "range": {
                "date": {
                  "gte": 20191201,
                  "lte": 20191231
                }
              }
            }
          ]
        }
      },
      "size": 0,
      "aggs": {
        "father": {
          "terms": {
            "field": "userId",
            "order": {
              "top_hit": "desc"
            },
            "size": 1
          },
          "aggs": {
            "top_tags_hits": {
              "top_hits": {}
            },
            "top_hit": {
              "sum": {
                "script": {
                  "source": "doc.resumeView"
                }
              }
            }
          }
        }
      }
    }

    返回结果:

    {
      "took" : 3,
      "timed_out" : false,
      "_shards" : {
        "total" : 2,
        "successful" : 2,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : 339,
        "max_score" : 0.0,
        "hits" : [ ]
      },
      "aggregations" : {
        "father" : {
          "doc_count_error_upper_bound" : -1,
          "sum_other_doc_count" : 338,
          "buckets" : [
            {
              "key" : 6231765,
              "doc_count" : 1,
              "top_hit" : {
                "value" : 476.0
              },
              "top_tags_hits" : {
                "hits" : {
                  "total" : 1,
                  "max_score" : 1.4E-45,
                  "hits" : [
                    {
                      "_index" : "ehirestate",
                      "_type" : "ehire",
                      "_id" : """1475127623176520191203""",
                      "_score" : 0.0,
                      "_routing" : "1475127",
                      "_source" : {
                        "date" : 20191203,
                        "activeTime" : 0,
                        "inboxView" : 0,
                        "resumeTemDown" : 0,
                        "userId" : 6231765,
                        "loginCount" : 3,
                        "inboxExport" : 0,
                        "otherView" : 0,
                        "inboxSearch" : 1,
                        "resumeSearch" : 73,
                        "ctmId" : 1475127,
                        "downloadCount" : 2,
                        "resumeView" : 476
                      }
                    }
                  ]
                }
              }
            }
          ]
        }
      }
    }
  • 相关阅读:
    求一个数字各个位的数字之和
    二进制和十进制的转换 分别用python和js实现
    pymysql 获取插入数据的主键id
    js03.事件
    02.js运算符
    jsonpath
    01.js控制台
    2.命令补充
    hashmap
    正则表达式的补充
  • 原文地址:https://www.cnblogs.com/parent-absent-son/p/12020905.html
Copyright © 2020-2023  润新知