Ho la seguente mappaturaQuery di ricerca per recuperare i documenti nidificati in elasticsearch con sorgente_ disabilitato
{
"cloth": {
"dynamic" : false,
"_source" : {"enabled" : false },
"properties": {
"name": {
"type": "string",
"index": "analyzed"
},
"variation": {
"type": "nested",
"properties": {
"size": {
"type": "string",
"index": "not_analyzed"
},
"color": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
io non sono in grado di capire un modo per recuperare i campi oggetto nidificati che utilizzano la query campi.
{
"fields" : ["name" , "variation.size", "variation.color"],
"query" : {
"nested" : {
"path" : "variation",
"query" : {
"bool" : {
"must" : [
{ "term" : { "variation.size" : "XXL" } },
{ "term" : { "variation.color" : "red" } }
]
}
}
}
}
}
La query precedente restituisce
"_id" : "1",
"_score" : 1.987628,
"fields" : {
"variation.size" : [ "XXL", "XL" ],
"variation.color" : [ "red", "black" ],
"name" : [ "Test shirt" ]
}
Quando ho provato
"fields" : ["name" , "variation"]
ho ottenuto l'errore
Stato: 400
motivo: "ElasticsearchIllegalArgumentException [campo [variazione] non è un campo foglia]"
Quale è come previsto.
Come posso ottenere l'oggetto variazione così com'è?
Risultato previsto. Ho bisogno di recuperare l'oggetto variabile nel suo complesso in modo da poter mantenere l'associazione di dimensioni e colore. Come "rosso" con "XXL".
"variation" : { "XXL" , "red"}
Aggiornamento: Fonte è disabilitato per questo tipo Index.
Il numero 1 è la sorgente disabilitata per il tipo. Il problema 2 riguarda la query che hai fornito, il risultato sono 2 oggetti variazione. variazione: [2] 0: {color: "red" size: "XXL"} - 1: {color: "black" size: "XL"} Ma stavo cercando solo un oggetto variazione che corrisponda a XXL e rosso. – user1760178
1. Non puoi fare ciò che vuoi con 'fields'. 2. Se uno degli oggetti nidificati corrisponde alla query, non solo è possibile restituire il documento nidificato corrispondente, ma restituisce il documento radice con tutti i documenti nidificati. –
L'ho capito ora. Ma la mia domanda qui è che la query _source non aiuta molto dato che Source è disabilitato per questo tipo. Quindi quale query dovrei usare per ottenere gli oggetti nidificati? – user1760178