tutorial - elasticsearch-La agregación devuelve términos en clave, pero no el campo completo, ¿cómo puedo obtener el campo completo devuelto?
instalar elasticsearch (3)
Me encontré con un problema similar. Cuando ejecuté el comando:
curl -XGET "localhost:9200/logstash*/_mapping?pretty"
la respuesta tenía un seguimiento que era útil:
"host" : {
"type" : "string",
"norms" : {
"enabled" : false
},
"fields" : {
"raw" : {
"type" : "string",
"index" : "not_analyzed",
"ignore_above" : 256
}
}
},...
Me di cuenta de que agregar .raw debería cambiar la salida y obtendría la salida deseada.
algo así como:
"aggs": {
"computes": {
"terms": {
"field": "host.raw",
"size": 0
}
}
}
¿El truco para mí?
Novato de la búsqueda elástica pero estoy viendo muchos campos de tipo cadena tiene un campo "en bruto" que se puede utilizar dentro de la consulta.
Sería bueno si algunos expertos pueden arrojar luz sobre mis hallazgos. Correcto / Parcialmente correcto / ¿Incorrecto?
En la implementación de elasticsearch, tengo pocas agregaciones simples sobre la base de pocos campos, como se muestra a continuación:
"aggs" : {
"author" : {
"terms" : { "field" : "author"
, "size": 20,
"order" : { "_term" : "asc" }
}
},
"title" : {
"terms" : { "field" : "title"
, "size": 20
}
},
"contentType" : {
"terms" : { "field" : "docType"
, "size": 20
}
}
}
Las agregaciones funcionan bien y obtengo los resultados en consecuencia. pero el campo clave del título devuelto (o cualquier otro campo - palabra múltiple), tiene una sola palabra agregación y resultados. Necesito el título completo en el resultado devuelto, en lugar de solo una palabra, lo cual no tiene mucho sentido. ¿Cómo puedo obtener eso?
Resultados actuales (solo un fragmento) -
"title": {
"buckets": [
{
"key": "test",
"doc_count": 1716
},
{
"key": "pptx",
"doc_count": 1247
},
{
"key": "and",
"doc_count": 661
},
{
"key": "for",
"doc_count": 489
},
{
"key": "mobile",
"doc_count": 487
},
{
"key": "docx",
"doc_count": 486
},
{
"key": "pdf",
"doc_count": 450
},
{
"key": "2012",
"doc_count": 397
} ] }
Resultados previstos -
"title": {
"buckets": [
{
"key": "test document for stack overflow ",
"doc_count": 1716
},
{
"key": "this is a pptx",
"doc_count": 1247
},
{
"key": "its another document and so on",
"doc_count": 661
},
{
"key": "for",
"doc_count": 489
},
{
"key": "mobile",
"doc_count": 487
},
{
"key": "docx",
"doc_count": 486
},
{
"key": "pdf",
"doc_count": 450
},
{
"key": "2012",
"doc_count": 397
} }
Revisé mucha documentación, explica diferentes maneras de agregar resultados, pero no pude encontrar la forma de obtener el texto completo si hay un campo en la clave del resultado, por favor, ¿cómo puedo lograrlo?
Necesita tener copias no identificadas de los términos en el índice, en su asignación usar multi-fields :
{
"test": {
"mappings": {
"book": {
"properties": {
"author": {
"type": "string",
"fields": {
"untouched": {
"type": "string",
"index": "not_analyzed"
}
}
},
"title": {
"type": "string",
"fields": {
"untouched": {
"type": "string",
"index": "not_analyzed"
}
}
},
"docType": {
"type": "string",
"fields": {
"untouched": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
}
}
En su consulta de agregación, haga referencia a los campos afectados:
"aggs" : {
"author" : {
"terms" : {
"field" : "author.untouched",
"size": 20,
"order" : { "_term" : "asc" }
}
},
"title" : {
"terms" : {
"field" : "title.untouched",
"size": 20
}
},
"contentType" : {
"terms" : {
"field" : "docType.untouched",
"size": 20
}
}
}
parece que los multi_campos especificados en la publicación anterior están en desuso http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/_multi_fields.html#_multi_fields