类型为

时间:2016-03-29 15:38:32

标签: elasticsearch

如果fileType不存在/空字符串/ null,我将如何忽略最后一个术语过滤器?

fileType的一个例子是一个字符串,如'image','pdf','excel'。

如果fileType不存在或者是null /空字符串我想返回所有文件类型

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

1 个答案:

答案 0 :(得分: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"
          }
        }
      }
    }
  }
}