如何在数组上创建范围查询
How to create a range query on array
查询结果如下:
{
"query": {
"match_all": {}
}
}
{
"data": [
{
"hits": [
{
"_source": {
"AR_UnitePoids": 3,
"CatTarif": [
{
"PVTTCSite": 1
},
{
"PVTTCSite": 2
}
]
}
},
{
"_source": {
"AR_UnitePoids": 5,
"CatTarif": [
{
"PVTTCSite": 3
},
{
"PVTTCSite": 4
}
]
}
}
]
}
]
}
如果我想获取 AR_UnitePoids
>= 5 的文档,我可以这样做:
{
"query": {
"range": {
"AR_UnitePoids": {
"gte": 5
}
}
}
}
{
"data": [
{
"hits": [
{
"_source": {
"AR_UnitePoids": 5,
"CatTarif": [
{
"PVTTCSite": 3
},
{
"PVTTCSite": 4
}
]
}
}
]
}
]
}
但现在我想要 CatTarif
的第二个 PVTTCSite
大于 4 的所有文档:
{
"query": {
"range": {
"CatTarif.1.PVTTCSite": {
"gte": 4
}
}
}
}
但是这个查询不起作用,我得到 0 hits
。
我该怎么做?
编辑:
感谢@TusharShahi 的评论和这个 doc 我设法创建了这个查询:
{
"query": {
"nested": {
"path": "CatTarif",
"query": {
"bool": {
"must": [
{ "range": { "CatTarif.PVTTCSite": { "gte": 4 } } }
]
}
}
}
}
}
有效,但我仍然无法查询 CatTarif 的特定索引。
{
"query": {
"nested": {
"path": "CatTarif",
"query": {
"bool": {
"must": {
"range": {
"CatTarif.PVTTCSite": {
"gte": 4
}
}
},
"filter": {
"term": {
"CatTarif.CatTarif": 1
}
}
}
}
}
}
}
查询结果如下:
{
"query": {
"match_all": {}
}
}
{
"data": [
{
"hits": [
{
"_source": {
"AR_UnitePoids": 3,
"CatTarif": [
{
"PVTTCSite": 1
},
{
"PVTTCSite": 2
}
]
}
},
{
"_source": {
"AR_UnitePoids": 5,
"CatTarif": [
{
"PVTTCSite": 3
},
{
"PVTTCSite": 4
}
]
}
}
]
}
]
}
如果我想获取 AR_UnitePoids
>= 5 的文档,我可以这样做:
{
"query": {
"range": {
"AR_UnitePoids": {
"gte": 5
}
}
}
}
{
"data": [
{
"hits": [
{
"_source": {
"AR_UnitePoids": 5,
"CatTarif": [
{
"PVTTCSite": 3
},
{
"PVTTCSite": 4
}
]
}
}
]
}
]
}
但现在我想要 CatTarif
的第二个 PVTTCSite
大于 4 的所有文档:
{
"query": {
"range": {
"CatTarif.1.PVTTCSite": {
"gte": 4
}
}
}
}
但是这个查询不起作用,我得到 0 hits
。
我该怎么做?
编辑:
感谢@TusharShahi 的评论和这个 doc 我设法创建了这个查询:
{
"query": {
"nested": {
"path": "CatTarif",
"query": {
"bool": {
"must": [
{ "range": { "CatTarif.PVTTCSite": { "gte": 4 } } }
]
}
}
}
}
}
有效,但我仍然无法查询 CatTarif 的特定索引。
{
"query": {
"nested": {
"path": "CatTarif",
"query": {
"bool": {
"must": {
"range": {
"CatTarif.PVTTCSite": {
"gte": 4
}
}
},
"filter": {
"term": {
"CatTarif.CatTarif": 1
}
}
}
}
}
}
}