我有一个索引(默认架构),其中包含字段“人员”,并且该字段是一个数组。
在索引中有两个对象:
{"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 0.8630463,
"hits": [
{
"_index": "warehouse",
"_type": "_doc",
"_id": "2",
"_score": 0.8630463,
"_source": {
"order": 2,
"status": "done",
"personnel": [
{
"name": "mike",
"function": "packer"
},
{
"name": "henry",
"function": "checker"
} ] }
},
{
"_index": "warehouse",
"_type": "_doc",
"_id": "1",
"_score": 0.8630463,
"_source": {
"order": 1,
"status": "done",
"personnel": [
{
"name": "jon",
"function": "packer"
},
{
"name": "mike",
"function": "checker"
}
] } } ] } }
我想查询它以获取订单,其中状态已完成,打包此订单的人是麦克。
我查询很多,但是我总是得到两个命令,因为迈克在两个命令中都存在(巫婆功能不同)
示例查询:
{"query": {
"bool": {
"must": [
{
"match": {
"status": "done"
}
},
{
"bool": {
"must": [
{
"term": {
"personnel.name": "mike"
}
},
{
"term": {
"personnel.function": "packer"
}
} ] } } ] } } }
我的问题是,如何准备查询以仅向我返回一个订单(麦克是包装工)
答案 0 :(得分:0)
好吧,我的回答只是一个猜测,因为您没有提供所遇到问题的描述。但是您查询的嵌套部分应该是这样的:
{
"query": {
"bool": {
"must": [
{
"match": {
"status": "done"
}
},
{
"nested": {
"path": "personnel",
"query": {
"bool": {
"must": [
{
"term": {
"personnel.name": "mike"
}
},
{
"term": {
"personnel.function": "packer"
}
}
]
}
}
}
}
]
}
}
}