Ho una serie di dati aziendali in un database ES. Sto cercando di ottenere il conteggio del numero di documenti in cui ciascuno si verifica, ma sto riscontrando alcuni problemi con la query di aggregazione. Sto cercando di escludere termini come "Corporation" o "Inc." Finora sono stato in grado di farlo con successo per un termine alla volta secondo il codice qui sotto.Query Aggregazione Elasticsearch con più esclusioni
{
"aggs" : {
"companies" : {
"terms" : {
"field" : "Companies.name",
"exclude" : "corporation"
}
}
}
}
che restituisce
"aggregations": {
"assignee": {
"buckets": [
{
"key": "inc",
"doc_count": 375
},
{
"key": "company",
"doc_count": 252
}
]
}
}
Idealmente mi piacerebbe essere in grado di fare qualcosa di simile
{
"aggs" : {
"companies" : {
"terms" : {
"field" : "Companies.name",
"exclude" : ["corporation", "inc.", "inc", "co", "company", "the", "industries", "incorporated", "international"],
}
}
}
}
Ma io non sono stati in grado di trovare un modo che non è così genera un errore
Ho esaminato la sezione "Termini" di Aggregazione nella documentazione ES e posso trovare solo un ampio per una singola esclusione. Mi chiedo se è possibile escludere più termini e in tal caso qual è la sintassi corretta per farlo.
Nota: so che è possibile impostare il campo su "not_analyzed" e ottenere raggruppamenti per i nomi di società completi anziché i nomi di suddivisione. Tuttavia, sono riluttanti a fare questo come l'analisi permette un secchio di essere più tollerante di variazioni di nome (ad esempio Microsoft Corp & Microsoft Corporation)
Per info, questo è stato implementato come di ES 1.5. Vedi questo problema per maggiori informazioni: https://github.com/elastic/elasticsearch/issues/11959 –