안녕하세요.
elasticsearch에 저장된 데이터에 질의를 통해 특정 field의 distinct value list를 불러오고 싶습니다.
kibana로 하는 방법과 e/s api를 통해 하는 방법 두가지 모두 알고싶은데 방법이 있나요?
제가 지금 해본 방법으로는 kibana에서 visualize에 들어가서 Buckets에 X-axis에 Terns, field명을 입력하고 Order에 Descending, Size에 100을 주면 값이 나오기는 하는데, Size 100이 아닌 전체 리스트를 다 뽑고 싶어요. (전체 리스트 뽑으면 약 70000개 정도 됩니다.)
그리고 이거를 e/s api 쿼리를 통해서 똑같이 진행하고싶은데, 아무리 커뮤니티를 찾아봐도 해당 내용과 관련된 질문 및 답변이 없는 것 같습니다..
Elasticsearch 에서는 권장하지 않는 기능을 고려하고 계시는데요, ES는 inverted index 를 기본으로 top-value 를 빠르게 가져오는 것에 포커싱 되어 있기 때문에 distinct list 뽑으시려면 어쩔 수 없이 인덱스를 전부 스크롤로 돌려 가며 가져오셔야 할 것 같습니다.
보통 이런 기능에 대한 문의를 주시면 저는 역으로 질문 드리는 편인데요, 7만개나 되는 데이터를 전부 뽑아야 하는 이유가 있으신가요? 다 뽑아서 눈으로 찾는 것 보다는 찾을 텀을 인덱스에서 하나 하나 쿼리로 확인 하는 것이 Elasticsearch 입장에서는 경제적입니다.
안녕하세요. 답변감사드립니다.
음.. 우선 현재 요구사항이 '서비스 장애 당시 서비스에 접속한 고객들을 찾아 해당 고객에게 알림을 보낸다'입니다.
장애가 7월 18일에 발생했고 쿼리를 통해 대상자 70000만명을 추려내 해당 고객들의 uuid값을 sms를 보내는 서버에 전달해줘야 하는 상황입니다.
물론 전달할 때 다른 방법이 없으니 당연히 키바나에서 대상자 리스트를 csv 파일로 드랍하여 그 파일을 보내려고 했습니다..
만약 키바나에서 해당 기능을 사용할 수 없다면 현재 제 생각으로는 말씀하신 scroll api를 통해 리쿼스트 후 파일로 결과를 드랍하는 서버를 하나 만들어야 될 것 같은데, 아무리 생각해도 키바나에서 해당 작업을 할 수 있는 방법이 있을 것 같아 혹시나 싶어 질문을 남겼습니다..
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.