В моих данных Имена и документы являются вложенными объектами. Мои данные
{
"id":"1234"
"Names":{
"name":"Elasticseasrch,
"count":14
},
"documents":[{
"type":"pan",
"value"234234sdfsd"
},
{
"type":"passport",
"value"543543"
}
]
},
{
"id":"456"
"Names":{
"name":"Kibana,
"count":6
},
"documents":[{
"type":"pan",
"value"6775675757"
},
{
"type":"passport",
"value"543543"
}
]
}
Мой запрос - это где id и имя или документ должны совпадать.результирующий документ содержит объект innerhit «456_doc», где это соответствует значению документа = «234234sdfsd», где id - «1234», но не «456».поэтому я не хочу, чтобы "456_doc" внутрихитовый объект в результате.
{
"query": {
"bool": {
"must": [
{
"bool":{
"must":[
{ "match": {
"id":"1234"
}
},
{
"bool": {
"should": [
{
"nested": {
"inner_hits": {
"_source": true,
"name":"1234_name"
},
"path": "Names",
"query": {
"match": {
"Names.name":"Elasticsearch"
}
}
}
} ,
{
"nested": {
"inner_hits": {
"_source": true,
"name":"1234_doc"
},
"path": "documents",
"query": {
"match": {
"documents.value":"234234sdfsd"
}
}
}
}
]
}
}
]
}
},
{
"bool":{
"must":[
{ "match": {
"id":"456"
}
},
{
"bool": {
"should": [
{
"nested": {
"inner_hits": {
"_source": true,
"name":"456_name"
},
"path": "Names",
"query": {
"match": {
"Names.name":"kibana"
}
}
}
} ,
{
"nested": {
"inner_hits": {
"_source": true,
"name":"456_doc"
},
"path": "documents",
"query": {
"match": {
"documents.value":"234234sdfsd"
}
}
}
}
]
}
}
]
}
}
]
}
}}