如何使用Lucene查询语法在Elastic搜索中进行嵌套字段查询



这是一个简单的用例,

我有一个系统,可以将Lucene查询发送到我的弹性搜索。我有一个地图

{
"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"
}
]
}

如何查询以获取商品名称为香蕉库存>的所有商品;10,在KQL中,我可以编写类似items:{ name:banana and stock > 10 }的内容

Lucene表达式语言不支持查询嵌套文档。这就是为什么KQL语言填补了这一空白。

这是目前通过Kibana搜索栏查询嵌套文档的唯一方法。

最新更新