Elasticsearch嵌套查询匹配和/或

时间:2014-09-03 06:37:30

标签: elasticsearch nested-query

例如,我的数据包含以下内容:

{
  author: "test",
  books: [
    {
      name: "first book",
      cost: 50
    },
    {
      name: "second book",
      cost: 100
    }
  ]
}

我想搜索包含cost > 40所有图书的作者。该查询的外观如何?字段books映射为nested property

1 个答案:

答案 0 :(得分:1)

对于一本书的成本超过40(作为点击量)的作者姓名,查询中的内容将起作用

POST http://192.168.0.68:9200/library/Book/_search
{
   "fields": ["author"], 
   "query": {
      "filtered": {
         "query": {
            "match_all": {}
         },
         "filter": {
            "nested": {
               "path": "books",
               "filter": {
                  "range": {
                     "books.cost": {
                        "gt": 40
                     }
                  }
               }
            }
         }
      }
   }
}

对于费用大于40 的所有图书,我必须在收到回复后在客户端手动处理嵌套字段的集合

不确定此处是否应用脚本将过滤器应用于所有嵌套对象。

<强>参考

document not in nested documents elasticsearch