2013-05-22 2 views
6

하이픈을 포함하는 필드에서 와일드 카드를 사용하여 쿼리 문자열을 검색 할 수 있도록 elasticsearch를 구성하는 방법을 알아 냈습니다. 나는 word_delimiter 필터와 공백 토크 나이를 사용하는 것을 시도했다Elasticsearch에 하이픈이있는 인덱스 필드

{ 
    "tags":[ 
     "deck-clothing-blue", 
     "crew-clothing", 
     "medium" 
    ], 
    "name":"Crew t-shirt navy large", 
    "description":"This is a t-shirt", 
    "images":[ 
     { 
     "id":"ba4a024c96aa6846f289486dfd0223b1", 
     "type":"Image" 
     }, 
     { 
     "id":"ba4a024c96aa6846f289486dfd022503", 
     "type":"Image" 
     } 
    ], 
    "type":"InventoryType", 
    "header":{ 
    } 
} 

:

나는 다음과 같이 문서가

{ 
"settings" : { 
    "index" : { 
     "number_of_shards" : 1, 
     "number_of_replicas" : 1 
    }, 
    "analysis" : { 
     "filter" : { 
      "tags_filter" : { 
       "type" : "word_delimiter", 
       "type_table": ["- => ALPHA"] 
      } 
     }, 
     "analyzer" : { 
      "tags_analyzer" : { 
       "type" : "custom", 
       "tokenizer" : "whitespace", 
       "filter" : ["tags_filter"] 
      } 
     } 
    } 
}, 
"mappings" : { 
    "yacht1" : { 
     "properties" : { 
      "tags" : { 
       "type" : "string", 
       "analyzer" : "tags_analyzer" 
      } 
     } 
    } 
} 
} 

을하지만 이것들은 (태그)을 검색하고 자신을 검색 결과 :

deck*  -> match 
deck-* -> no match 
deck-clo* -> no match 

어디서 잘못 볼 수 있습니까?

감사합니다 :)

+0

필터를 제거하면 어떻게됩니까? – concept47

+0

필터를 제거해도 검색 결과에 영향을 미치지 않습니다. 이것이 내가 함께 종료 된 설정입니다 :) –

답변

8

분석기는 (I 필터를 잃을 것입니다하지만) 괜찮지 만, 하이픈을 제거합니다 태그 필드를 검색 할 표준 분석기를 사용되도록 검색어 분석기를 지정하지 그런 다음 그것에 대해 쿼리를 시도합니다. (의미를 보려면 curl "localhost:9200/_analyze?analyzer=standard" -d "deck-*"을 실행하십시오.)

기본적으로 "deck * .

"deck-clo *"는 "deck clo *"로 검색 중이며 다시 "deck"또는 "clo"로 시작하는 단어가 없으므로 쿼리가 실패합니다.

나는

"mappings" : { 
    "yacht1" : { 
     "properties" : { 
      "tags" : { 
       "type" : "string" 
      } 
     } 
    } 
} 

날 어떻게되는지 알려 태그에

"analysis" : { 
    "analyzer" : { 
     "default" : { 
      "tokenizer" : "whitespace", 
      "filter" : ["lowercase"] <--- you don't need this, just thought it was a nice touch 
     } 
    } 
} 

다음 특수 분석기를 제거 다음 수정을 할 것입니다.

+1

최고, 감사 : { "설정": { "인덱스": { "number_of_shards": 1, "number_of_replicas": 1 }, "분석": { "분석"{ "기본"{ "토큰 화": "공백" "필터"[ "소"] }}} }} –

관련 문제