es70 如何创建子文档和嵌套文档
在Elasticsearch中,我们可以使用嵌套文档和子文档来组织和存储数据。下面是如何创建子文档和嵌套文档的步骤:
- 创建一个主文档,其中包含一个或多个字段。
- 在主文档中创建一个嵌套字段或子文档字段。
- 在嵌套字段或子文档字段中添加一个或多个字段。
以下是一个示例,展示如何创建一个具有嵌套字段的文档:
PUT my_index/_doc/1
{
"title": "My Book",
"author": {
"first_name": "John",
"last_name": "Doe"
},
"publisher": {
"name": "My Publisher",
"address": {
"street": "123 Main St",
"city": "Anytown",
"state": "CA",
"zip": "12345"
}
}
}
在上面的示例中,author和publisher字段都是嵌套字段,它们包含了子字段。address是publisher字段的子字段。
要查询嵌套或子文档,可以使用嵌套查询或has_child查询。例如,要查找所有具有特定地址的出版商,可以使用以下查询:
GET my_index/_search
{
"query": {
"nested": {
"path": "publisher",
"query": {
"bool": {
"must": [
{ "match": { "publisher.name": "My Publisher" }},
{ "match": { "publisher.address.city": "Anytown" }}
]
}
}
}
}
}
在上面的查询中,我们使用了嵌套查询来查找所有具有特定地址的出版商。我们指定了嵌套字段的路径,并使用布尔查询来匹配出版商的名称和地址的城市。
总之,使用子文档和嵌套文档可以组织和存储复杂的数据结构,并使查询更加灵活和强大
原文地址: https://www.cveoy.top/t/topic/hwRk 著作权归作者所有。请勿转载和采集!