2016-03-29 14 views
1

fileTypeが存在しない場合、最後の用語フィルタを無視する方法/空の文字列/ null?タイプ別のElasticSearch条件付きフィルタクエリ

fileTypeの例は 'image'、 'pdf'、 'excel'などの文字列です。

のfileTypeは存在しないか、私はすべての種類のファイル

{ 
    'query': { 
    'filtered': { 
     'filter': { 
     'exists': { 
      'field': 'file_id' 
     } 
     } 
    } 
    } 
    ,'filter': { 
    'terms': { 
     'conversationUsers': [this._user.id] 
    } 
    } 
    ,'filter': { 
    'term': { 
     'attachment.type': fileType 
    } 
    } 
} 
+0

どこがnullになると思われますか?データまたはクエリで? – Rahul

答えて

1

あなたはそのためのスクリプトフィルタを使用することができ返したいのですが、ヌル/空の文字列である場合:例えばhttps://www.elastic.co/guide/en/elasticsearch/reference/2.0/query-dsl-script-query.html

は、
GET _search 
{ 
    "query": { 
    "filtered": { 
     "query": { 
     "query_string": { 
      "query": "*" 
     } 
     }, 
     "filter": { 
     "script": { 
      "script": "if (!doc['attachment.type'].empty) doc['attachment.type'].value == param1; else doc['attachment.type'].value != 0 ;", 
      "params": { 
      "param1" : "fileType" 
      } 
     } 
     } 
    } 
    } 
} 
関連する問題