我有一个 json
{
"uniqueKey": "918084",
"dataValue": {
"metadata": {
"timestamps": [{
"key": "startTime",
"value": "2017-02-07T18:00:00-06:00"
}, {
"key": "processedTime",
"value": "2017-02-07T18:05:00-06:00"
}]
}
}
}
我必须编写一个查询来按 startTime 进行排序。有谁知道我如何在弹性搜索中为此编写查询吗? dataValue 是一个嵌套字段。
您可以使用sort with 嵌套路径.
假设您有以下映射:
{
"test-so": {
"mappings": {
"with-dates": {
"properties": {
"datavalue": {
"type": "nested",
"properties": {
"metadata": {
"type": "nested",
"properties": {
"timestamps": {
"type": "nested",
"properties": {
"key": {
"type": "keyword"
},
"value": {
"type": "date",
"format": "date_optional_time"
}
}
}
}
}
}
},
"uniquekey": {
"type": "keyword"
}
}
}
}
}
}
您可以使用sort如下:
GET /test-so/with-dates/_search
{
"query": {
"nested": {
"path": "datavalue.metadata.timestamps",
"query": {
"term": {
"datavalue.metadata.timestamps.key": {
"value": "startTime"
}
}
}
}
},
"sort": [
{
"datavalue.metadata.timestamps.value": {
"order": "desc",
"nested_path": "datavalue.metadata.timestamps"
}
}
]
}
这将返回按日期订购的文件开始时间.
希望这对您有所帮助,也许映射不完全相同。 (注:在 Elastic 5.1 上测试)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)