如何使用lucene查询语法在elasticsearch中执行嵌套字段查询

m1m5dgzv  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(1)|浏览(754)

这是一个简单的用例,
我有一个将lucene查询发送到ElasticSearch的系统。我有Map

{
"mappings": {
    "properties": {
      "grocery_name":{
        "type": "text"
       },
      "items": {
        "type": "nested",
        "properties": {
          "name": {
            "type": "text"
          },
          "stock": {
            "type": "integer"
          },
          "category": {
            "type": "text"
          }
        }
      }
    }
  }
}

数据看起来像

{
  "grocery_name": "Elastic Eats",
  "items": [
    {
      "name": "banana",
      "stock": "12",
      "category": "fruit"
    },
    {
      "name": "peach",
      "stock": "10",
      "category": "fruit"
    },
    {
      "name": "carrot",
      "stock": "9",
      "category": "vegetable"
    },
    {
      "name": "broccoli",
      "stock": "5",
      "category": "vegetable"
    }
  ]
}

如何查询以获取项目名称为banana且stock>10的所有项目,在kql中,我可以编写如下代码 items:{ name:banana and stock > 10 }

cetgtptt

cetgtptt1#

lucene表达式语言不支持查询嵌套文档。这就是kql语言填补这一空白的原因。
这是目前通过kibana搜索栏查询嵌套文档的唯一方法。

相关问题