2015-01-09 3 views
1

여기 내 ES 쿼리입니다. 이 목록에는 {authorid, authorname} 값이 반복되어 있으며 반복없이 동일한 목록을 가져와야합니다. 이것은 어렵지 않거나 적어도 그것이 오늘 아침에 생각한 것 같습니다. 문서의 부족과 함께 ES에 대한 나의 작은 지식은 사소한 문제에 대한 해결책을 찾기 위해 필사적입니다.Elasticsearch 반환 별개의 결과

물론 전체 목록을 가져 와서 코드를 통해 반복을 제거 할 수는 있지만 가능한 경우 불필요한 데이터를받지 않아 나중에 제거하지 않도록하는 것이 좋습니다.

누구나 손수 할 수 있습니까? 다른 접근법을 사용해야합니까?

미리 감사드립니다.

+0

이 [답변] (https://stackoverflow.com/questions/24508191/elasticsearch-returning-only-documents-with-distinct-value)을 보시오 – notdang

+0

알겠습니다. 그러나 이것이 의미하는 바가 없습니다. 방법 ('히트'배열) 고유 값으로 필터링 결과를 얻으려면? 내 말은, 나는 authorid에 의해 'distinct'를 선택해야하기 때문에 'bucket'배열은 나에게 유용하지 않다. (id의 배열은 프론트 엔드에서 아무 것도 말하지 않는다.) 'hits'배열은 여전히 ​​중복 된 값을 포함한다. 나는 이것을 이렇게하고 코드별로 고유 한 값을 필터링해야한다고 생각하기 시작했다. 지금까지는 그렇게 할 것입니다. 그러나 누군가가 이것이 유일한 방법인지 확인해 주거나 결과가 구별되게하는 몇 가지 해결 방법이있는 경우 ES 결과에서 곧바로 곧장 필터링됩니다. 정말 감사하겠습니다. 고마워 btw !! – user3407868

답변

0

나는 source filtering를 사용하는 것이 좋습니다 것입니다 :

{ 
    "_source": [ "news.authorname.raw", "news.authorid" ], 
    "query": { 
     "filtered": { 
     "filter": { 
      "terms": { 
      "news.authorid": [ 
       1, 
       2 
      ] 
      } 
     } 
     } 
    } 
    } 

일반적으로 때로는 카티 제품처럼 보여요 필드,보다 쉽게 ​​처리 할 수 ​​있습니다.

+0

감사합니다 nefo_x, 나는 그것을 시도했지만 반복되는 값을 받고 있습니다. – user3407868

관련 문제