我的文件格式如下:
{
"id": number
"chefId: number
"name": String,
"ingredients": List<String>,
"isSpecial": boolean
}
以下是5个文档的列表:
{
"id": 1,
"chefId": 1,
"name": "Roasted Potatoes",
"ingredients": ["Potato", "Onion", "Oil", "Salt"],
"isSpecial": false
},
{
"id": 2,
"chefId": 1,
"name": "Dauphinoise potatoes",
"ingredients": ["Potato", "Garlic", "Cream", "Salt"],
"isSpecial": true
},
{
"id": 3,
"chefId": 2,
"name": "Boiled Potatoes",
"ingredients": ["Potato", "Salt"],
"isSpecial": true
},
{
"id": 4,
"chefId": 3
"name": "Mashed Potatoes",
"ingredients": ["Potato", "Butter", "Milk"],
"isSpecial": false
},
{
"id": 5,
"chefId": 4
"name": "Hash Browns",
"ingredients": ["Potato", "Onion", "Egg"],
"isSpecial": false
}
我将搜索名称字段中包含“土豆”的地方。像这样:
{
"query": {
"wildcard": {
"status": {
"value": "*Potatoes*"
}
}
}
}
但是我还想在返回文档时添加一些额外的条件:
在Elasticsearch中可以进行这种链接吗?我希望能够在单个查询中执行此操作,以便避免在我的(Java)代码中添加逻辑。
答案 0 :(得分:0)
在一个Elasticsearch查询中无法拥有这种逻辑。您可能需要使用aggregates / post_filter进行棘手的查询,因此在一个查询中拥有所需的所有数据,然后在Java应用程序中对其进行转换。 但是最好的方法(也是更可维护的)是有两个查询。