我有一个简短的问题,看起来很简单,但到目前为止我找不到任何答案。
我想在Elasticsearch节点上检索给定日期字段的最后一个文档。但我想拥有最后一个文档,仅适用于包含特定字段的文档。
例如,假设我要获取上一次包含字段“ promotionCode ”的购买:
询问 :
http://elasticsearch:9200/store1/purchase/_search?q=vendor:Marie&size=1&sort=date:desc
其中store1是我的索引,请购买文档类型。
现在假设我的ElasticSearch中有这两个文档:
"hits": [
{
"_index": "store1",
"_type": "purchase",
"_id": "1",
"_score": 1,
"_source": {
"date": "2016-03-16T12:53:16.000Z",
"vendor": "Marie",
"promotionCode": "XYZ123"
}
},
{
"_index": "store1",
"_type": "purchase",
"_id": "2",
"_score": 1,
"_source": {
"date": "2016-03-18T12:53:16.000Z",
"vendor": "Marie"
}
}
]
上面的查询将检索ID为2的文档,但是我的结果中将没有任何字段“ promotionCode ”。
如果要获取包含特定字段的最后一个文档,该怎么办?
我探索了“字段”过滤器,但如果不包含该字段,它只会发送回无效文档,并且我阅读了有关源过滤的信息,但不确定它是否在执行我想要的操作...
非常感谢您的任何提示!
您可以尝试以下查询:
{
"query": {
"term": { "vendor": "Marie" }
},
"filter": {
"bool": {
"must_not": { "missing": { "field": "promotionCode" } }
}
},
"sort": { "date" : "desc" },
"size": 1
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句