delete - consultas en elasticsearch
Eliminar documentos duplicados de una búsqueda en Elasticsearch (1)
Tengo un índice con mucho papel con el mismo valor para el mismo campo. Tengo una deduplicación en este campo.
Los agregadores vendrán a mí como contadores. Me gustaría una lista de documentos.
Mi índice:
- Doc 1 {domain: ''domain1.fr'', nombre: ''nombre1'', fecha: ''01 -01-2014 ''}
- Doc 2 {domain: ''domain1.fr'', nombre: ''nombre1'', fecha: ''01 -02-2014 ''}
- Doc 3 {domain: ''domain2.fr'', nombre: ''nombre2'', fecha: ''01 -03-2014 ''}
- Doc 4 {domain: ''domain2.fr'', nombre: ''nombre2'', fecha: ''01 -04-2014 ''}
- Doc 5 {domain: ''domain3.fr'', nombre: ''nombre3'', fecha: ''01 -05-2014 ''}
- Doc 6 {domain: ''domain3.fr'', nombre: ''nombre3'', fecha: ''01 -06-2014 ''}
Quiero este resultado (resultado de deduplicación por campo de dominio):
- Doc 6 {domain: ''domain3.fr'', nombre: ''nombre3'', fecha: ''01 -06-2014 ''}
- Doc 4 {domain: ''domain2.fr'', nombre: ''nombre2'', fecha: ''01 -04-2014 ''}
- Doc 2 {domain: ''domain1.fr'', nombre: ''nombre1'', fecha: ''01 -02-2014 ''}
Podría usar el colapso de campo , agrupar los resultados en el campo de name
y establecer el tamaño del agregador top_hits
en 1.
/POST http://localhost:9200/test/dedup/_search?search_type=count&pretty=true
{
"aggs":{
"dedup" : {
"terms":{
"field": "name"
},
"aggs":{
"dedup_docs":{
"top_hits":{
"size":1
}
}
}
}
}
}
esto vuelve:
{
"took" : 192,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"failed" : 0
},
"hits" : {
"total" : 6,
"max_score" : 0.0,
"hits" : [ ]
},
"aggregations" : {
"dedup" : {
"buckets" : [ {
"key" : "name1",
"doc_count" : 2,
"dedup_docs" : {
"hits" : {
"total" : 2,
"max_score" : 1.0,
"hits" : [ {
"_index" : "test",
"_type" : "dedup",
"_id" : "1",
"_score" : 1.0,
"_source":{domain: "domain1.fr", name: "name1", date: "01-01-2014"}
} ]
}
}
}, {
"key" : "name2",
"doc_count" : 2,
"dedup_docs" : {
"hits" : {
"total" : 2,
"max_score" : 1.0,
"hits" : [ {
"_index" : "test",
"_type" : "dedup",
"_id" : "3",
"_score" : 1.0,
"_source":{domain: "domain1.fr", name: "name2", date: "01-03-2014"}
} ]
}
}
}, {
"key" : "name3",
"doc_count" : 2,
"dedup_docs" : {
"hits" : {
"total" : 2,
"max_score" : 1.0,
"hits" : [ {
"_index" : "test",
"_type" : "dedup",
"_id" : "5",
"_score" : 1.0,
"_source":{domain: "domain1.fr", name: "name3", date: "01-05-2014"}
} ]
}
}
} ]
}
}
}