2016-09-28 8 views
0

ワイルドカードを使用している問題に直面しています。ElasticSearchのワイルドカードクエリを書き込めませんか?

"hits": { 
     "total": 1000, 
     "max_score": 1, 
     "hits": [ 
     { 
      "_index": "accounts", 
      "_type": "data", 
      "_id": "25", 
      "_score": 1, 
      "_source": { 
       "account_number": 25, 
       "balance": 40540, 
       "firstname": "Virginia", 
       "lastname": "Ayala", 
       "age": 39, 
       "gender": "F", 
       "address": "171 Putnam Avenue", 
       "employer": "Filodyne", 
       "email": "[email protected]", 
       "city": "Nicholson", 
       "state": "PA" 
      } 
     } 

そして、私は以下のクエリを使用します:

GET /_search 
{ 
    "query":{  
    "filtered" : { 
     "filter" : { 
     "bool" : { 
      "should" : 
      { 
      "match":{ 
      "wildcard":{"lastname" : "Aya*" } 
      } 
      }  
     } 
     } 
    } 
    } 
} 

をしかし、私は、ワイルドカードを使用してデータを見つけようとするたびに、それは

データセットは、ESに次のようなエラーを返して次のエラーが発生しています:

{ 
    "error": { 
     "root_cause": [ 
     { 
      "type": "query_parsing_exception", 
      "reason": "[match] query does not support [lastname]", 
      "index": "accounts", 
      "line": 9, 
      "col": 25 
     } 

私は、クエリのワイルドカードが、私はまだデータを取得することはできません。ここでの検索は成功しますが、データは返されません。マッチクエリなし

GET /_search 
{ 
    "query":{  
    "filtered" : { 
     "filter" : { 
     "bool" : { 
      "should" : 
      { 
      "wildcard":{"lastname" : "Aya*" } 
      }  
     } 
     } 
    } 
    } 
} 

私はどのように私は、デバイスのクエリをすべきで理解するのに役立ちます。私はこのクエリ文字列をJAVA APIでも使う必要があります。だから、その前のアドバイスもとても助けになるだろう。

答えて

0

あなたのlastnameフィールドはおそらくanalyzedであると推測しています。したがって、インデックスされたトークンはayalaであり、Ayalaではありません。 wildcardクエリが分析されていないので、あなたは小文字で検索語を指定する必要があります。

はこれを試してみてください:それは働いた

POST /_search 
{ 
    "query":{  
    "filtered" : { 
     "filter" : { 
     "bool" : { 
      "should" : 
      { 
      "wildcard":{"lastname" : "aya*" } 
      }  
     } 
     } 
    } 
    } 
} 
+0

感謝を。私はElasticSearchを初めて使っているので、この点は私の心を邪魔しませんでした。再度、感謝します。 –

+0

素晴らしい、嬉しい助け! – Val

+0

同じストレッチでもう1つのクエリ...ドキュメントにLongデータ型のフィールドのワイルドカードクエリを記述できますか? {"wildcard":{"age":2 *}} ワイルドカードを使用せずにこれを達成する方法はありますか? –

関連する問題