2016-08-10 2 views
1

나는 패싯 검색 UI를하고 있는데, 내가 추가하고 싶은 패싯 중 하나는 IP 필드의 처음 3 옥텟입니다.IP의 처음 3 옥텟에 대한 용어 집계

예를 들어 IP가 "192.168.1.1", "192.168.1.2", "192.168.2.1"인 문서의 경우 "192.168.1 (2)"및 "192.168.2 (1)".

여기에 사용할 수있는 집계가 있습니까? 내가 알 수있는 한, 범위 집계를 사용하려면 범위를 미리 정의해야하며 용어 집계는 필드 만 가져야합니다.

분명히 대안은 나에게 첫 번째 3 옥텟을 별도의 필드로 인덱싱하는 것이지만, 물론 그것을 피하기를 선호합니다.

감사합니다.

답변

1

delimeter가 '.'인 경로 계층 토큰 화 프로그램을 추가 할 수 있습니다. 토큰 화기가 방금 만든 토크 나이저로 설정된 사용자 정의 분석기가 있습니다. 방법이

Elasticsearch - using the path hierarchy tokenizer to access different level of categories

그런 다음 당신이 용어를 집계 할 수 있으며, 링크 된 대답에서 각 숫자 그룹

{ 
    "key": "192", 
    "doc_count": 10 
}, 
{ 
    "key": "192.168", 
    "doc_count": 10 
}, 
... 

별로 그룹화 결과를 얻을 것이다 :

구문이 질문을 참조 특정 집계 수준을 제외합니다. 다음은 3 가지 레벨의 수치를 제외한 모든 결과를 제외해야합니다.

"aggs": { 
    "ipaddr": { 
     "terms": { 
      "field": "your_ip_addr", 
      "exclude": ".*", 
      "include": ".*\\..*\\..*" 
    } 
} 

https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-pathhierarchy-tokenizer.html

관련 문제