【发布时间】:2017-04-13 08:41:42
【问题描述】:
我有以下描述国家-城市 (1:n) 关系的 Json
{
"country": [
{
"id": 1,
"name": "Country1",
"city": [
{"id": 1, "name": "City1"},
{"id": 2,"name": "City2"}
]
}, {
"id": 2,
"name": "Country2",
"city": [
{"id": 3,"name": "City3"},
{"id": 4,"name": "City4"}
]
}, {
"id": 3,
"name": "Country3",
"city": [
{"id": 5,"name": "City5"},
{"id": 6,"name": "City6"}
]
}
]
}
我已将其加载到包含三个国家/地区的 3 个文档的 ES 地图中。
我在城市索引中添加了嵌套属性
...
"city": {
"type": "nested",
...
我想查询所有城市并获得分页结果。
- 例如 3 次点击将返回 city1、city2、city3
- 我想按国家/地区名称过滤
我试过了
GET /127.0.0.1:9200/country_city/_search
{
"from": 0,
"size": 2,
"fields": [
"city.id", "city.name"
]
}
和
GET /127.0.0.1:9200/country_city/country/_search?_source=false
{
"query": {
"nested": {
"path": "city",
"query": {
"match_all": {}
},
"inner_hits": {
"sort": "city.id",
"from": 0,
"size": 3
}
}
},
"fields": [
"name",
"city.id",
"city.name"
]
}
但第一个返回两个 4 个城市而不是 2 个。
(2 个国家/地区各有 2 个城市)
第二个返回所有文档(尽管请求中的大小为 2)并在内部元素中返回每个国家/地区的前 3 个城市。
如何获取嵌套对象的页面大小? 然后进入下一页?
【问题讨论】:
标签: elasticsearch