elasticsearch嵌套查询nested完整案例
时间: 2023-11-18 22:08:23 浏览: 218
下面是一个完整的elasticsearch嵌套查询nested案例:
假设我们有一个文档类型为“book”,其中包含以下字段:
- title:书的标题
- author:书的作者,是一个嵌套类型,包含以下字段
- name:作者的名字
- age:作者的年龄
我们的目标是查询作者年龄小于30岁的书籍。
首先,我们需要在mapping中定义author字段为嵌套类型:
```
PUT /books
{
"mappings": {
"book": {
"properties": {
"title": {
"type": "text"
},
"author": {
"type": "nested",
"properties": {
"name": {
"type": "text"
},
"age": {
"type": "integer"
}
}
}
}
}
}
}
```
接下来,我们添加一些示例文档:
```
PUT /books/book/1
{
"title": "The Great Gatsby",
"author": {
"name": "F. Scott Fitzgerald",
"age": 29
}
}
PUT /books/book/2
{
"title": "To Kill a Mockingbird",
"author": {
"name": "Harper Lee",
"age": 34
}
}
PUT /books/book/3
{
"title": "1984",
"author": {
"name": "George Orwell",
"age": 46
}
}
```
现在,我们可以使用nested查询来查找作者年龄小于30岁的书籍:
```
GET /books/book/_search
{
"query": {
"nested": {
"path": "author",
"query": {
"range": {
"author.age": {
"lt": 30
}
}
}
}
}
}
```
在此查询中,我们使用了nested查询,指定了嵌套路径为“author”。然后,我们在查询中使用了range查询,指定了作者年龄小于30岁。此查询将返回文档1(The Great Gatsby)。
阅读全文