2014-04-02 4 views
3

나는 logstash/elasticsearch/kibana 시스템을 설정했고 구조화 된 json 유형 로그는 탄성 검색 (C# 응용 프로그램이 아닌)으로 들어가고 kibana에서 볼 수 있습니다.NEST로 로그 숨김에서 탄성 검색을위한 필터를 만드는 방법은 무엇입니까?

logstash에서 데이터를 슬라이스하고 싶기 때문에 NEST를 사용하고 있습니다.

다음 코드는 디버거에서 검사 할 수있는 "히트"결과를 생성합니다. 내가 (키바에 표시) 로그에 존재하는 생각하는 무언가를 포함하도록 검색을 확장하려고하면

ElasticClient client = new ElasticClient(settings); 


var searchResults = client.Search(s => s 
             .From(0) 
             .Size(100) 
             .AllIndices() 

             .SortDescending("@timestamp") 
           ); 

그러나, 지금은 결과를 얻을.

var searchResults = client.Search(s => s 
             .From(0) 
             .Size(100) 
             .AllIndices() 
             .Query(q => q 
             .Term("MySpecialFieldName", "ValueThatAppears") 
             ) 
             .SortDescending("@timestamp") 
            ); 

또한 샘플에 표시된 유형 안전성 및 기타 메커니즘을 활용하고자합니다. 그것이 관련 될 것으로 예상되는지 확실하지 않습니다.

(별도로 알아 내려고 노력 중입니다. "client.Search (검색 결과에 대한 결과를 막는 것처럼 보입니다. 클래스에 대한 정보가 데이터와 정렬되어 있지 않은 것으로 가정합니다. 이 탄성에 의해 색인 도착 때

logstash 시스템 유형에() 내 생각은 로그인 또는 로그이를두고 :

+0

대화식 쿼리 도구를 사용할 때 logstash 필드의 이름이 "log.MySpecialFieldName.Raw"로 끝나는 것을 볼 수 있습니다. 나는 지금까지 아무런 노력없이 이것을 시도해 왔지만 이것이 올바른 방향인가? 용어가 정확합니까? – Cadmium

답변

1

올바른 설정이이 작품을 만들기 위해 찾을 수) ... 역 직렬화하는 것이없는하거나 필터링한다 또한 ".raw"라는 접미사가 있어야합니다. 따라서 작업 예제는 다음과 같이 끝납니다 :

var searchResults = client.Search<MyClass>(s => s 
             .From(0) 
             .Size(100) 
             .AllIndices() 
             .AllTypes() 
             .Query(q => q 
             .Term("MySpecialFieldName.raw", "ValueThatAppears") 
             ) 
             .SortDescending("@timestamp") 
            ); 
+1

강력하게 타이핑하려면'.Term (p => p.MySpecialFieldName.Suffix ("raw"), "")'할 수 있습니다. 내장 된 지원의 혜택을 볼 수있는 특별한 유스 케이스를 제시합니다. NEST에 Nest.Logstash 네임 스페이스에 Logstash DTO 클래스가있는 경우 사용 하시겠습니까? –

+0

그래,이 경우 나는 logstash 데이터를 처리하기 위해서만 nest를 사용하고있다. – Cadmium