问题描述
{
"order_id" : 987,"product_id": 1234,"order_date": "2020-10-01","day of week": "Monday","currency": "USD"
..
},{
"order_id" : 789,"product_id": 4321,"order_date": "2020-11-01","currency": "USD"
..
}
现在,我要保存的所有order_id的所有列表/数组
- 货币不为空
- “星期几”是“星期一”
{
"size": 0,"query": {
"bool": {
"filter": [
{
"terms": {
"order_id": [
**{
"match": {
"day of week": "Monday"
}
},{
"exists": {
"field": "currency"
}
}**
]
}
},{
"exists": {
"field": "order_date"
}
}]
}
}
..
..
}
我要查询所有order_id的列表,而不是现有的内部查询(粗体)。
解决方法
在下面的搜索查询中进行尝试,并参考Boolean query上的ES官方文档
查询以查找包含所有order_id的列表/数组
- 货币不为空
- “星期几”是“星期一”
添加具有相同索引数据的工作示例并采用默认映射。
搜索查询:
{
"query": {
"bool": {
"filter": [
{
"term": {
"day of week.keyword": "Monday"
}
},{
"exists": {
"field": "currency"
}
}
]
}
}
}
搜索结果:
"hits": [
{
"_index": "my-index","_type": "_doc","_id": "1","_score": 0.0,"_source": {
"order_id": 987,"product_id": 1234,"order_date": "2020-10-01","day of week": "Monday","currency": "USD"
}
},{
"_index": "my-index","_id": "2","_source": {
"order_id": 789,"product_id": 4321,"order_date": "2020-11-01","currency": "USD"
}
}
]