2015-01-20 2 views
1

신축성있는 검색에서 '_search'쿼리의 SQL 문과 같은 SQL을 수행하려면 어떻게해야합니까?Elastic Search에서 "group by"와 같이 SQL을 수행하는 방법은 무엇입니까?

나는 기본적으로 필요에 :

-

2 완료 등 여러 개의 필터를 사용하여 항목, 쿼리의 무리 필터 - 독특한 CATEGORY_ID의 버킷으로 이러한 결과를 넣습니다. 'category_id'는 현재 항목 문서 유형의 'float'필드로 매핑됩니다. 또한 각 버킷에서 위의 필터와 일치하는 항목 중 하나를 표시해야합니다.

3 -

참고이 버킷을 통해 페이지 매김 : 항목 수 : 1 백만는 고유은 계산 CATEGORY_ID : 60,000

나는 '항목'에 의해 그룹화 된 데이터 유형 모두를 좀하고 싶습니다 라는 필드. 결과에서이 그룹 내의 모든 고유 한 'category_id'및 각 카테고리의 첫 번째 항목 (첫 번째 항목 또는 다른 항목)의 목록을 가져오고 싶습니다. 나는 "from"과 "size"를 사용하여 이러한 결과를 페이지 매김 할 수 있기를 원합니다. 내가 CATEGORY_ID에 의해 그룹화 된 색상 후 '빨간색'이 모든 것을 얻을의 효과에 데이터를 다시 싶어 예를 들어

id:1, category_id: 1, color:'blue', 
id:2, category_id: 1, color:'red', 
id:3, category_id: 1, color:'red', 
id:4, category_id: 2, color:'blue', 
id:5, category_id: 2, color:'red', 
id:6, category_id: 3, color:'blue', 
id:7, category_id: 3, color:'blue', 
id:8, category_id: 3, color:'blue', 

: 예를 들어

은 난의 영향에 데이터가 있다면 :

category_id: 1 
{ 
item: { id:2, category_id: 1, color:'red'} 
}, 
category_id: 2 
{ 
item: { id:5, category_id: 2, color:'red'} 
} 

이 내가 지금까지 가지고 있지만, 올바른 최고 히트를하지 않으며, 내가 그것을 여러 필터와 쿼리를 허용하거나 paginatable 생각 해달라고 것입니다.

GET swap/item/_search 
{ 
    "size": 0, 
    "aggs": { 
    "color_filtered_items": { 
     "filter": { 
     "and": [ 
      { 
      "terms": { 
       "color": [ 
       "red" 
       ] 
      } 
      } 
     ] 
     }, 
     "aggs": { 
     "group_by_cat_id": { 
      "terms": { 
      "field": "category_id", 
      "size": 10 
      }, 
      "aggs": { 
      "items": { 
       "top_hits": { 
       "_source": { 
        "include": [ 
        "name", 
        "id", 
        "category_id", 
        "color" 
        ] 
       }, 
       "size": 1 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 

해킹, 임시 해결책, 데이터 저장소 제안 변경 환영. 어떤 도움이라도 대단히 감사합니다. 감사합니다 모두 :)

답변

0

category_id에 대한 숫자 범위 기반 집계를 원하지 않는다면 다음과 같이하면됩니다.

또한 집계 결과에서 페이지 매기기를 수행 할 수 없지만 집계 당 크기를 제어 할 수는 있습니다.

{ 
    "aggs": { 
    "itemsAgg": { 
     "terms": { 
     "field": "items", 
     "size": 10 
     }, 
     "aggs": { 
     "categoryAgg": { 
      "terms": { 
      "field": "category_id", 
      "size": 10 
      } 
     } 
     } 
    } 
    } 
} 
+0

죄송합니다. 나는이 질문에 답하지 않을 것입니다. 어쩌면 나는 명확하지 않았기 때문에 더 많은 정보로 질문을 업데이트했습니다. 이 대답은 실제로 여러 필터 쿼리와 일치하는 항목 데이터를 검색하지 않습니다. –

관련 문제