在NoSQL类型的文档存储中,返回的只是文档,而不是文档的一部分。在
您的要求:“我想要两份文件,A2和A3。“意味着您需要分别索引这些文档中的每一个,而不是作为另一个“父”文档中的数组。在
如果需要在country旁边匹配父文档的值,则需要对数据进行非规范化,并将父文档中的这些值存储在每个子文档中。在
完成上述操作后,查询就很容易了。{cdm>假设字段映射为:
国家:{
type:“字符串”,
索引:“未分析”
}在
要查找包含DE的文档,可以执行以下操作:curl -XGET 'http://127.0.0.1:9200/_all/_search?pretty=1' -d '
{
"query" : {
"constant_score" : {
"filter" : {
"term" : {
"country" : "DE"
}
}
}
}
}
'
要查找具有DE或{}的文档:
^{pr2}$
要将上述内容与其他一些查询术语组合起来,请执行以下操作:curl -XGET 'http://127.0.0.1:9200/_all/_search?pretty=1' -d '
{
"query" : {
"filtered" : {
"filter" : {
"terms" : {
"country" : [
"DE",
"FR"
]
}
},
"query" : {
"text" : {
"address.street" : "bonjour"
}
}
}
}
}
'
另请参阅此答案,以了解对象数组如何因其展平方式而变得棘手: