如果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
}
}
}
答案 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"
}
}
}
}
}
}