Filtro de script no Elasticsearch

Para um tipo ItemTransactionde mapeamento a seguir, permite consultar documentos com paidDateum dia de antecedência orderDate.

Es Type Mapping

{
"ItemTransaction": {
"properties": {
orderDate
: {
type
: "date",
format
: "dateOptionalTime"
},
paidDate
: {
type
: "date",
format
: "dateOptionalTime"
},
customerId
: {
type
: "string",
index
: "not_analyzed",
omit_norms
: true,
index_options
: "docs"
},
paidAmount
: {
type
: "long"
}
}
}
}

Inquerir

A consulta usando o filtro de script seria como abaixo,

{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"and": {
"filters": [
{
"script": {
"script": "doc['orderDate'].value > doc['paidDate'].value+86400000"
}
}
]
}
}
}
},
"fields": [
"cutomerId",
"orderDate",
"paidDate",
"paidAmount"
]
}

Referências

filtro de script

Script em elasticsearch