淘先锋技术网

首页 1 2 3 4 5 6 7

在ES中,我们可以使用嵌套JSON来对复杂类型的数据进行索引和查询。这里我们介绍一些常见的嵌套JSON查询方法。

首先,我们需要知道如何索引嵌套JSON。我们使用点(.)符号来索引JSON对象的属性,使用方括号([ ])来索引JSON对象的数组元素。如果我们要查询嵌套JSON中的某个属性,可以使用点符号连接多个属性名称。例如,在一个拥有父子关系的JSON中,我们可以使用以下方式查询父级节点的某个属性:

GET /my_index/my_type/_search
{
"query": {
"match": {
"parent.name": "John"
}
}
}

如果我们要查询嵌套JSON数组中的元素,可以使用nested查询。以下是一个查询某个车型的名字、颜色以及用户评论的例子:

GET /my_index/my_type/_search
{
"query": {
"nested": {
"path": "cars",
"query": {
"bool": {
"must": [
{
"match": {
"cars.name": "BMW"
}
},
{
"match": {
"cars.color": "red"
}
},
{
"match": {
"cars.comments": "good"
}
}
]
}
}
}
}
}

除此之外,我们还可以使用has_child和has_parent查询子文档和父文档。以下是一个查询某个商品的评价数量的例子:

GET /my_index/my_type/_search
{
"query": {
"has_child": {
"type": "comments",
"query": {
"match": {
"content": "good"
}
}
}
}
}

以上就是一些常见的ES查询嵌套JSON的方法,希望能对大家有所帮助。