Kibana의 Discover 탭에서, _source.date 필드를 기준으로 정렬해서 _source를 보여줄 수 있나요?


(yechanpark) #1

안녕하세요.

Kibana 6.4.1을 이용해서 모니터링을 구축하고 있는데요.

Visualize쪽에서 Vega를 사용하는건 어떻게 해결을 하고 있는 편인데 (아직 지원이 안되는 기능도 좀 있네요)

의외로 Discover에서 이슈가 생겼습니다.

원하는 것은 Discover 탭에서 특정 인덱스에 대해 모든 documents를 _source.date 필드 값 기준으로 내림차순 정렬하는 것으로 상당히 간단한 편에 속합니다.

하지만 지원이 안되는 것 같더라구요.
Selected Field를 지정하면 되지만, 이 인덱스의 도큐먼트들은 서로 다른 필드 값을 가질 수 있습니다.

예를 들어 A 라는 인덱스에 Document1~3까지 있다면

date 라는 필드는 전부 가지고있고,
doc1은 a라는 필드를,
doc2는 b라는 필드를,
doc3은 c라는 필드를 가지고 있습니다.

이 a b c라는 필드는 다른 도큐먼트에 있을 수도 있고, 없을 수도 있습니다.
따라서 인덱스 매핑을 그다지 고려하지 않고 데이터를 넣고 있다고 볼 수 있습니다.

하지만 모니터링에서는 a, b, c를 가지고 있건 가지고 있지 않건 전부 보고 싶습니다.
(에러로그와 관련되어 있으며 가시화를 하지 않습니다)

@timestamp를 활용해서 _source를 정렬하는 케이스는 봤지만 데이터가 생성된 시점이 아니라 들어온 시점이기 때문에 정확하지 않고 (로그를 쏘는 WAS 여러 대가 클러스터링)
소스코드에서 만들어준 date값을 활용해서 _source 필드들을 _source.date 필드에 대한 내림차순으로 보여주려고 하는데,

키바나 디스커션이나 깃헙을 둘러본 결과 불가능한 쪽으로 결론을 내리고 있습니다.
소스코드를 뜯어 고치지 않는 이상은요.

혹시 몰라서 Advanced Settings도 한번 쭉 봤는데, 어떤 동작을 하는지 도저히 모르겠는 것들도 있고,
원하는 기능인줄 알았는데 아닌 것도 있네요. (삽질중)

Discover 탭의 검색창 바로 밑에 Filter Editor에서는 엘라스틱 쿼리의 sort가 먹지 않는 것 같은데, 도저히 방법이 생각이 안나네요..
말씀드린대로 인덱스에 들어가는 도큐먼트의 필드가 모두 달라서 Selected Field를 지정하는 방법은 필드가 추가될 때마다 일일이 작업해줘야 한다는 점도 있구요.

공통적인 부분이 date이기 때문에 date하나만 콕 찝어서 Selected Field로 올려두고,
필요하면 드릴다운 버튼을 눌러서 확인하는 방법은 어떠냐고 회의 때 말해봤는데 별로 맘에 안들어하더라고요..

그렇다면 결국 _source를 보여주되 정렬은 _source.date를 활용해서 정렬을 해야한다는 결론만 남았습니다..

혹은 비슷하게라도 구현이 가능한지 문의드립니다.

정 안된다면 Vega로 테이블 방식으로 처리해볼까.. 도 고민했는데 ㅡ ㅡ;
이정도면 그냥 웹페이지 하나 만드는게 더 쉬울 수준이라..
게다가 인덱스 매핑 문제 때문에 유지보수도 더 헬일 것 같구요.

으..


(yechanpark) #2

자문자답입니다.

결론적으로 가능합니다.

엘라스틱 멤버가 답변을 해줬네요.