ElasticSearch 그룹 조회의 몇 가지 예

17059 단어 elasticsearch
facets 인터페이스는query에 따라 통계 데이터를 되돌릴 수 있습니다. 그 중terms_stats는 그룹 통계로 키의 상황에 따라value의 통계 데이터를 되돌려줍니다. 그룹by와 유사합니다.
"terms_stats": { "key_field": "", "value_field": ""}
 

예: 모든 IP의 요청 실행 시간을 조회합니다


질의 문구:
   1: {
   2:     "size": 0,
   3:     "facets": {
   4:         "ips_stats": {
   5:             "terms_stats": {
   6:                 "key_field": "[email protected]",
   7:                 "value_field": "[email protected]_time",
   8:                 "size": 5
   9:             }
  10:         }
  11:     }
  12: }

설명:
  • 두 번째 줄의size는hits명중의 반환 0조를 나타낸다.
  • 제3행의facets,제5행의terms_stats는 그룹 조회를 위한 필수 키워드입니다.
  • 네 번째 줄의 ips_stats는 이 그룹 조회에 대한 이름입니다. 마음대로 할 수 있습니다.
  • 6행key_field는 [email protected] 필드를 그룹화합니다.
  • 일곱 번째 줄value_field는 [email protected]_time의 값을 그룹화한 후의 연산을 나타낸다.
  • 여덟 번째 줄의size는 그룹 연산을 표시하고 최대 몇 줄을 되돌려줍니다.

  • 이 예의 조회 결과는 다음과 같다. 여기서 간단하게 보면 두 개만 되돌아왔다.
       1: {
       2:     "took": 35641,
       3:     "timed_out": false,
       4:     "_shards": {
       5:         "total": 5,
       6:         "successful": 5,
       7:         "failed": 0
       8:     },
       9:     "hits": {
      10:         "total": 193109307,
      11:         "max_score": 1,
      12:         "hits": []
      13:     },
      14:     "facets": {
      15:         "ips_stats": {
      16:             "_type": "terms_stats",
      17:             "missing": 0,
      18:             "terms": [
      19:                 {
      20:                     "term": "180.149.157.110",
      21:                     "count": 1871112,
      22:                     "total_count": 1871112,
      23:                     "min": 0.016,
      24:                     "max": 80.306,
      25:                     "total": 545853.1529999943,
      26:                     "mean": 0.2917266058899704
      27:                 },
      28:                 {
      29:                     "term": "59.49.225.22",
      30:                     "count": 515179,
      31:                     "total_count": 515179,
      32:                     "min": 0,
      33:                     "max": 600.004,
      34:                     "total": 27793.9160000002,
      35:                     "mean": 0.053950017372602924
      36:                 }
      37:             ]
      38:         }
      39:     }
      40: }

    결과에서 알 수 있듯이 우리는 모든 IP의 실행 시간에 대해 개수, 최대 최소값, 평균값, 합계 계산을 계산했다.
    관련 기술 참고: http://stackoverflow.com/questions/16549001/elasticsearch-order-responses-and-then-facet/16568770

    예: 각 IP의 요청 수에 따라 정렬


    JSON 질의
       1: {
       2:     "size": 0,
       3:     "facets": {
       4:         "time_stats": {
       5:             "terms_stats": {
       6:                 "key_field": "[email protected]",
       7:                 "value_field": "[email protected]_time",
       8:                 "size": 2,
       9:                 "order": "total"
      10:             }
      11:         }
      12:     }
      13: }

    상술한 조회보다 order 속성이 하나 더 있습니다.출력 결과 형식은 위와 같고, 단지 순서를 정한 것일 뿐, 나열하지 않는다.

    예: 전체 사이트의 실행 시간 조회


    json 조회:
       1: {
       2:     "query": {
       3:         "match_all": {}
       4:     },
       5:     "size": 0,
       6:     "facets": {
       7:         "stat1": {
       8:             "statistical": {
       9:                 "field": "[email protected]_time"
      10:             }
      11:         }
      12:     }
      13: }

    설명:
  • 최초의 조회 조건은 우리가 쓰지 않았다는 것은 모든 것을 취하는 것을 의미한다. 만약 당신이 지정한 범위를 조회하고 싶다면 여기에 쓸 수 있다.2-4 줄.다섯 번째 줄의size는 조회 조건에 표시된 데이터 항목의 수를 표시합니다.
  • statistical은 하나의 디지털 필드를 통계하는facet이다.

  • 결과:
       1: {
       2:     "took": 4824,
       3:     "timed_out": false,
       4:     "_shards": {
       5:         "total": 5,
       6:         "successful": 5,
       7:         "failed": 0
       8:     },
       9:     "hits": {
      10:         "total": 193109307,
      11:         "max_score": 1,
      12:         "hits": []
      13:     },
      14:     "facets": {
      15:         "stat1": {
      16:             "_type": "statistical",
      17:             "count": 142590544,
      18:             "total": 59320216.00531181,
      19:             "min": 0,
      20:             "max": 5347.085,
      21:             "mean": 0.4160178812790826,
      22:             "sum_of_squares": 14578358539.95768,
      23:             "variance": 102.06623708075713,
      24:             "std_deviation": 10.102783630304923
      25:         }
      26:     }
      27: }

    이 방법의 더 많은 참고:
    http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-facets-statistical-facet.html
     
     

    전체 참조 자료:


     
    공식 가이드 http://www.elasticsearch.cn/guide/ 중국어 http://es-cn.medcl.net/guide/ 중국어 http://www.elasticsearch.org/guide/ 영어
    번역 [ElasticSearch Server] 제1장: ElasticSearch 클러스터 사용 시작http://www.cnblogs.com/jefurry/tag/ElasticSearch/

    좋은 웹페이지 즐겨찾기