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
                  }
                }
              ]
            }
          }
        }
      ]
    }
  }
}
原文地址:https://www.cnblogs.com/parent-absent-son/p/12020905.html