Ho un indice e voglio ottenere un conteggio per le voci in ogni tipo di un particolare indice in elasticsearch, ma potrebbe non conoscere i tipi in anticipo.Come ottenere un conteggio per ogni tipo di indice in elasticsearch?
Così, per esempio, l'indice è
/events
e le tipologie potrebbero essere
/events/type1
/events/type2
...
/events/typeN
e mi piacerebbe per interrogare l'indice e dire "Dammi il conteggio di ciascuno di i tipi di eventi sotto indice", quindi forse un set di risultati come
/events/type1 : 40
/events/type2: 20
/events/typeN: 10
dove/eventi/_count avrebbero darmi
/events: 70
Edit: risposta
di imotov è grande. Sto avendo problemi a capire come farlo funzionare in JavaScript/Ajax facilmente però. Ho qualcosa di simile in questo momento:
$.ajax({
type: 'GET',
url: 'http://localhost:9200/events/_search?search_type=count',
data: '{ "facets" : { "count_by_type" : { "terms" : { "field": "_type" }}}}',
success: function(text) {
console.log(text);
}
)}'
Ma sto ottenendo soltanto il numero totale di elementi in ES, la porzione sfaccettature della risposta sembra mancare.
Grazie! Questo sembra sicuro. Non riesco a ottenere questa chiamata al mio ES lavorando da JavaScript/chiamate Ajax però ... hai qualche consiglio su come farlo? Ora ho: $ .ajax ({ \t tipo: 'GET', \t url: 'http: // localhost: 9200/events/_search?SEARCH_TYPE = count', \t dati: '{ "faccette": { "count_by_type": { "termini": { "campo": "_type"}}}}', \t successo: la funzione (testo) { \t \t console.log (testo); \t}, – cdietschrun
Modifica. Sembrava che il problema avesse bisogno di POST quella richiesta, ora capisco di più. – cdietschrun
Alcuni client HTTP non possono inviare il corpo della richiesta con richieste 'GET'. Quindi, a volte è necessario sostituire il comando con 'POST'. – imotov