2013-12-18 5 views
1

일부 데이터는 탄성 검색으로 색인화됩니다.이 중 하나의 비트는 IP 주소 (IP 유형이 아닌 문자열 유형으로 저장 됨)입니다. 내가으로 정의 된 IP 주소 필드에 대한 사용자 지정 분석기를 사용하고있어 다음 다음과 같이탄성 검색 : 특정 필드에서 검색 할 때 분석하지 않음

'ipv4_address_analyzer' => [ 
    'type' => 'custom', 
    'tokenizer' => 'ipv4_path_tokenizer', 
    'filter' => [], 
], 

ipv4_path_tokenizer가 정의 : 나는의 필드에 index_analyzer 속성을 사용

'ipv4_path_tokenizer' => [ 
    'type' => 'path_hierarchy', 
    'delimiter' => '.', 
    'buffer_size' => 15, 
], 

매핑의 경우이 쿼리는 다음 쿼리를 사용하여 올바르게 인덱싱되고 검색됩니다.

{ 
    "query": { 
    "query_string": { 
     "query": "95.129", 
     "fields": [ 
     "external_ip", 
     "domains", 
     "_all" 
     ], 
     "use_dis_max": true 
    } 
    }, 
    "size": 1000 
} 

그러나 ... 기본 검색 항문 yser와 약간의 잘못된 긍정 일치가 생성됩니다.

다른 검색 분석기를 사용하기 위해 IP 필드에 search_analyzer 속성을 지정할 수 있지만 실제로 원하는 것은 분석기를 통과하지 않고이 필드를 검색 할 때 검색어를 그대로 두는 것입니다.

필드 별 기준으로 검색어 분석을 사용 중지하는 방법이 있습니까?

+0

위양성 검사의 예를 들려 줄 수 있습니까? 검색어를 그대로두면 무슨 뜻인지 이해할 수 없습니다. 어쩌면 멀티 필드가 도움이 될까요? 또는 쿼리 문자열 대신 용어 필터에 IP를 넣는 방법은 무엇입니까? – kielni

+0

감사합니다. @kielni. 검색어가 분석되고 '.'에 토큰 화 된 경우 12.34.56.78은 (다른 것들 사이에서) 12, 34, 56, 78로 토큰 화됩니다. 따라서 56 번, 56.78, 56.78.90 및 56.78.90.12와 같이 path_hierarchy에 의해 토큰 화되었으므로 IP 56.78.90.12와 일치합니다. 본질적으로, 나는 그 분야에서 검색 할 때 검색 용어를 분석하고 싶지 않다. –

답변

3

마침내 설명서를 순항 할 때 대답을 찾았습니다. tokenizer는 최대 버퍼 크기로 잘라내는 것을 제외하고는 원래 용어를 그대로 유지합니다. 필터가 필요하지 않습니다. 아래 사용자 정의 분석기 :

'leave_me_alone' => [ 
    'type' => 'custom', 
    'tokenizer' => 'keyword', 
    'filter' => [], 
], 
관련 문제