tierra señor rey resurgir resolucion por pantalla los language juego han funcionar funciona error encontrado dejo brujo batalla archivos anillos abre elasticsearch

señor - Elasticsearch falla silenciosamente si el documento tiene un error de correspondencia para un campo



la batalla por la tierra media no funciona en windows 7 (2)

Si configura cadena ignore_malformed en falso. No indexaría el documento si está mal formado, pero arroja una excepción. Al menos en elasticsearch 1.6.0.

Ejemplo:

put test put test/test/_mapping { "properties" : { "title" : {"type" : "string"}, "data" : {"type": "long" ,"ignore_malformed":false} } } put test/test/1 { "data" : "1", "title" : "valid coerce string to number" } put test/test/2 { "data" : "hello", "title" : "invalid number" } #Failed Response { "error": "MapperParsingException[failed to parse [data]]; nested: NumberFormatException[For input string: /"hello/"]; ", "status": 400 } Query with Get fails get test/test/2 { "_index": "test", "_type": "test", "_id": "2", "found": false }

Estoy enfrentando un problema extraño con Elasticsearch. Mi asignación especifica que un determinado campo es de tipo long . Ahora accidentalmente intenté indexar algunos documentos que tenían tipo de string para ese campo en lugar de long . No recibí ningún error de Elasticsearch pero los documentos nunca fueron indexados. Cuando arreglé el problema, los documentos fueron indexados muy bien.

Ejemplo:

Mi mapeo:

{ "field1": { "type": "long" } }

Cuando envío este documento, falla silenciosamente:

{ "field1": "this is a string" }

Cuando envío esto, funciona como se esperaba:

{ "field1": 12345 }

¿Hay alguna forma de detectar este tipo de errores?


Sospecho que su mapeo es similar a esto:

{ "long_field": { "type": "long" } }

Si ese es el caso, puede establecer el indicador de coerce en false ya que es true de manera predeterminada y siempre intentará convertir cadenas a números y truncar fracciones para enteros.

{ "long_field": { "type": "long", "coerce": false } }

Si hace esto, la próxima vez que intente indexar un campo largo como una cadena, ES le dirá esto:

MapperParsingException[failed to parse [long_field]]; nested: IllegalArgumentException[Long value passed as String];