2016-03-29 24 views
1

Eğer fileType yoksa/boş string/null ise son terim filtresini nasıl reddederdim?ElasticSearch koşullu filtre sorgusu türüne göre

Dosya türü örneği 'image', 'pdf', 'excel' gibi bir dize olabilir.

fileType yok veya ben tüm dosya türlerini

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

Burada null olmasını bekliyorsunuz? Veri'de veya sorguda? – Rahul

cevap

1

Bunun için komut dosyası filtreyi kullanabilirsiniz iade etmek istiyorum null/boş dize ise: Örneğin 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" 
      } 
     } 
     } 
    } 
    } 
} 
İlgili konular