2016-05-06 11 views
1

私は弾性検索number: "1.5.2"を使用しており、edge_ngramの自動補完検索を実装しようとしています。私は何も返されません、次のクエリを実行すると弾性検索edge_ngram _allの一致クエリが無視されています

curl -XPUT 'localhost:8080/users/user/1' -d '{ 
 
    "email": "[email protected]", 
 
    "firstName": "Alexander", 
 
    "lastName": "Smith" 
 
}'

:私は、インデックス "ユーザー" 文書、その後

curl -XPUT 'localhost:8080/users' -d '{ 
 
    "settings": { 
 
     "analysis": { 
 
      "filter": { 
 
       "edge_ngram_filter": { 
 
        "type": "edge_ngram", 
 
        "min_gram": 2, 
 
        "max_gram": 10 
 
       } 
 
      }, 
 
      "analyzer": { 
 
       "edge_ngram_analyzer": { 
 
        "type": "custom", 
 
        "tokenizer": "standard", 
 
        "filter": [ 
 
         "lowercase", 
 
         "asciifolding", 
 
         "edge_ngram_filter" 
 
        ] 
 
       }, 
 
       "whitespace_analyzer": { 
 
        "type": "custom", 
 
        "tokenizer": "whitespace", 
 
        "filter": [ 
 
         "lowercase", 
 
         "asciifolding" 
 
        ] 
 
       } 
 
      } 
 
     }, 
 
     "mappings": { 
 
      "user": { 
 
       "_all": { 
 
        "type":"string", 
 
        "index_analyzer": "edge_ngram_analyzer", 
 
        "search_analyzer": "whitespace_analyzer" 
 
       }, 
 
       "properties": { 
 
        "id":{ 
 
         "type": "integer", 
 
         "index": "no", 
 
         "include_in_all":false 
 
        }, 
 
        "email": { 
 
         "type": "string" 
 
        }, 
 
        "firstName": { 
 
         "type": "string" 
 
        }, 
 
        "lastName": { 
 
         "type": "string" 
 
        } 
 
       } 
 
      } 
 
     } 
 
    } 
 
}'

:私は、次のマッピングを持っています:

_allマッチクエリは、ユーザーのドキュメントに一致していないのはなぜ

curl -XGET 'localhost:8080/users/_search' -d '{ 
 
    "query": { 
 
     "match":{ 
 
      "_all":{ 
 
       "query": "ale", 
 
       "operator":"and" 
 
      } 
 
     } 
 
    } 
 
}'

答えて

2

_allフィールド解析を無効にせずに、edge_ngramでオートコンプリート機能を実現できます。これは、定義したアナライザの名前をdefault_indexdefault_searchに変更することで行います(必要に応じて、aliasに元の名前( "edge_ngram_analyzer"と "whitespace_analyzer")を反映させることができます)。

curl -XPUT 'localhost:8080/users' -d '{ 
 
    "settings": { 
 
     "analysis": { 
 
      "filter": { 
 
       "edge_ngram_filter": { 
 
        "type": "edge_ngram", 
 
        "min_gram": 2, 
 
        "max_gram": 10 
 
       } 
 
      }, 
 
      "analyzer": { 
 
       "default_index": { 
 
        "type": "custom", 
 
        "tokenizer": "standard", 
 
        "filter": [ 
 
         "lowercase", 
 
         "asciifolding", 
 
         "edge_ngram_filter" 
 
        ] 
 
       }, 
 
       "default_search": { 
 
        "type": "custom", 
 
        "tokenizer": "whitespace", 
 
        "filter": [ 
 
         "lowercase", 
 
         "asciifolding" 
 
        ] 
 
       } 
 
      } 
 
     }, 
 
     "mappings": { 
 
      "user": { 
 
       "properties": { 
 
        "id":{ 
 
         "type": "integer", 
 
         "index": "no", 
 
         "include_in_all":false 
 
        }, 
 
        "email": { 
 
         "type": "string" 
 
        }, 
 
        "firstName": { 
 
         "type": "string" 
 
        }, 
 
        "lastName": { 
 
         "type": "string" 
 
        } 
 
       } 
 
      } 
 
     } 
 
    } 
 
}'

私はこれが美しく働いた:)

+0

を助けるために管理している希望:ここでは、関連する変更のあなたの構成があります。シンプルで洗練されたソリューション。ありがとうございました! – ARolek

関連する問題