update true doc_values data kibana

doc_values - cómo configurar fielddata=true en kibana



maps elasticsearch (4)

En su asignación de ES, debe establecer fielddata:true en su campo de publisher :

PUT your_index/_mapping/your_type { "your_type": { "properties": { "publisher": { "type": "text", "fielddata": true } } } }

Deberá reindexar sus datos después de realizar este cambio, pero luego Kibana ya no se quejará.

ACTUALIZAR

Puede ejecutar la consulta anterior en la interfaz de usuario Sense o mediante curl

curl -XPUT http://localhost:9200/index -d ''{ "mappings": { "type": { "properties": { "publisher": { "type": "text", "fielddata": true } } } } }''

O también puede ejecutarlo en su archivo Javascript justo antes de crear su documento:

client.indices.create({ index: ''index'', body: { "mappings": { "type": { "properties": { "publisher": { "type": "text", "fielddata": true } } } } } });

Soy nuevo en Kibana, tengo datos cargados en Elastic 5.0.0-alpha3 y estoy usando Kibana 5.0.0-alpha3 para Visualizar. Puedo mostrar algunos campos numéricos como histogramas, pero cuando quiero usar campos de texto, obtengo:

Visualize: Fielddata is disabled on text fields by default. Set fielddata=true on [publisher] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory.

Me advierten que los datos (nombres de los editores) pueden haber sido analizados en subcampos, pero me gustaría mostrarlos de todos modos.

¿Cómo establezco fielddata=true ?

EDIT: los problemas recientes en Kibana github sugieren que esta es una nueva característica en 5.0.0 y aún está en espera de una respuesta.

EDITAR (siguiendo la respuesta de @Val, y pidiendo ayuda para el novato elástico, y esperando que otros lo encuentren útil). El guion de ingesta fue:

fs = require(''fs'') var elasticsearch = require(''elasticsearch''); var client = new elasticsearch.Client({ host: ''localhost:9200'', log: ''trace'' }); fs.readFile(''/Users/pm286/workspace/cmdev/getpapers/20160602/crossref_results.json'', (err, data) => { if (err) throw err; document = JSON.parse(data) document = JSON.parse(data) for(i=0;i<document.length;i++) { client.create({ index: ''index'', type: ''type'', body: document[i] }) } });

¿Cómo incluyo el enfoque de @Val en esto?


Este código soluciona este problema.

PUT megacorp/_mapping/employee { "employee": { "properties": { "interests": { "type": "text", "fielddata": true } } } }

Así que este código se ejecutará a partir de entonces:

GET /megacorp/employee/_search { "aggs": { "all_interests": { "terms": { "field": "interests"} } } }


Habilitar datos de campo en un campo de texto existente, esto se requiere para hacer agregación en este campo

PUT megacorp/_mapping/employee { "properties": { "interests": { "type": "text", "fielddata": true } } }


Ya que estás usando Elastic 5.x (5.2 está disponible ahora mientras escribo esto), deberías usar el nuevo soporte de palabras clave en lugar de habilitar datos de campo en un campo indexado.

https://www.elastic.co/guide/en/elasticsearch/reference/5.2/fielddata.html proporciona buena información sobre los pros y los contras y sobre cómo configurar esto. Desde la página:

PUT my_index { "mappings": { "my_type": { "properties": { "my_field": { "type": "text", "fields": { "keyword": { "type": "keyword" } } } } } } }

A continuación, utiliza el campo ''my_field'' para búsquedas y el campo ''my_field.keyword'' para agregaciones, clasificación o en scripts.

my_field.keyword es lo que usaría dentro de Kibana / Grafana.