Ho bisogno di indicizzare 3 livelli (o più) di genitore figlio. Ad esempio, i livelli potrebbero essere un autore, un libro e caratteri di quel libro.Elasticsearch livello più profondo Relazione genitore-figlio (nipote)
Tuttavia, durante l'indicizzazione di più di due livelli c'è un problema con has_child e has_parent query e filtri. Se ho 5 frammenti, ottengo circa un quinto dei risultati quando si esegue una query "has_parent" al livello più basso (caratteri) o una query has_child al secondo livello (libri).
La mia ipotesi è che un libro venga indicizzato a un frammento dal suo id padre e quindi risiederà insieme al suo genitore (autore), ma un personaggio viene indicizzato a un frammento basato sull'hash dell'ID libro, che fa non è necessariamente conforme al frammento effettivo su cui è stato indicizzato il libro.
E così, questo significa che tutti i caratteri dei libri dello stesso autore non risiedono necessariamente nello stesso frammento (tipo di paralizzare davvero il vantaggio genitore-figlio).
Sto facendo qualcosa di sbagliato? Come posso risolvere questo problema, poiché sono davvero necessario per query complesse come "quali autori hanno scritto libri con personaggi femminili", ad esempio.
ho pazza una sostanza che mostra il problema, a: https://gist.github.com/eranid/5299628
Linea di fondo è, che se ho una mappatura:
"author" : {
"properties" : {
"name" : {
"type" : "string"
}
}
},
"book" : {
"_parent" : {
"type" : "author"
},
"properties" : {
"title" : {
"type" : "string"
}
}
},
"character" : {
"_parent" : {
"type" : "book"
},
"properties" : {
"name" : {
"type" : "string"
}
}
}
e un indice di 5 frammenti, non posso fare query con " has_child" e "has_parent"
La query:
curl -XPOST 'http://localhost:9200/index1/character/_search?pretty=true' -d '{
"query": {
"bool": {
"must": [
{
"has_parent": {
"parent_type": "book",
"query": {
"match_all": {}
}
}
}
]
}
}
}'
restituisce solo un quinto (circa) dei caratteri.
cool. Come posso specificarlo? – eran
utilizzando il parametro di routing sull'URL. Vedi la sezione di routing qui - http://www.elasticsearch.org/guide/reference/api/index_/ – imotov
Grazie. Posso anche specificare questo nei post-dati in qualche modo? in particolare per bulk_index, dove voglio specificare il routing per ogni documento? – eran