2016-09-05 19 views
0

です。私は自分のインデックスを作成しようとしていました。ここでは、クエリは「名前」の値にインデックスが付けられています。ElasticSearchインデックスに含まれるクエリの戻り値は

これは私の現在のインデックスの設定です:

{ 
    "users": { 
     "settings": { 
     "index": { 
      "analysis": { 
       "filter": { 
        "shingle_filter": { 
        "max_shingle_size": "2", 
        "min_shingle_size": "2", 
        "output_unigrams": "true", 
        "type": "shingle" 
        }, 
        "edgeNGram_filter": { 
        "type": "edgeNGram", 
        "min_gram": "1", 
        "max_gram": "20" 
        } 
       }, 
       "analyzer": { 
        "autocomplete_query_analyzer": { 
        "filter": [ 
         "standard", 
         "asciifolding", 
         "lowercase" 
        ], 
        "tokenizer": "standard" 
        }, 
        "autocomplete_index_analyzer": { 
        "filter": [ 
         "standard", 
         "asciifolding", 
         "lowercase", 
         "shingle_filter", 
         "edgeNGram_filter" 
        ], 
        "tokenizer": "standard" 
        } 
       } 
      }, 
      "number_of_shards": "1", 
      "number_of_replicas": "1" 
     } 
     } 
    } 
} 

と私のマッピング:

{ 
    "users": { 
     "mappings": { 
     "data": { 
      "properties": { 
       "name": { 
        "type": "string", 
        "analyzer": "autocomplete_index_analyzer", 
        "search_analyzer": "autocomplete_query_analyzer" 
       } 
      } 
     } 
     } 
    } 
} 

は今私の問題は、検索クエリ用語を含む結果を返さないということです。たとえば、ユーザーが「David」の場合、「Da」、「Dav」、「Davi」などの検索クエリは値を返しますが、「vid」または「avid」の検索では値は返されません。

これは設定値がわからないためですか?

答えて

2

edgeNGramの代わりにnGramを使用する必要があります。だから、単にあなたが、あなたのインデックスを拭く、それを再作成し、それを再び移入する必要があり、この

   "edgeNGram_filter": { 
       "type": "nGram",    <--- change here 
       "min_gram": "1", 
       "max_gram": "20" 
       } 

ノートには、この

   "edgeNGram_filter": { 
       "type": "edgeNGram", 
       "min_gram": "1", 
       "max_gram": "20" 
       } 

を変更。

関連する問題