Document Missing Exception ElasticSearch Java Spring data Elasticsearch

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

Document Missing Exception ElasticSearch Java Spring data Elasticsearch

This post has NOT been accepted by the mailing list yet.
I´m using ElasticSearch 1.7.3 and Spring-data-elasticsearch 1.2.0.RELEASE.

I have asked this question because of :

Toggle dropdown
es.dsic.publicador.dataconsumer.exception.DataConsumerException: Error procesando la distribución: Error indexando el item con id contenido; 41-cv-3454 [item_transparencia][2] [41][AVf7YJ0uzqfLY2RpjJRT]: document missing

I´ll show you my way to index and update a document

public String indexar(String subportal, IItemIndexado item) throws IndexadoException {

    if (null == subportal || subportal.isEmpty()) {
        throw new IndexadoException("El subportal es un campo obligatorio para indexar");

    ItemTransparencia itemTransparencia = (item.getClass() != ItemTransparencia.class)
            ? this.itemToItemTransparencia(item) : (ItemTransparencia) item;

    // Formateamos el rango para las ordenaciones 00001, 00002, ...

    IndexQuery query = new IndexQuery();

    // Mapeamos el type si no existe del subportal
    if (!this.elasticsearchOperations.typeExists(ITEM_TRANSPARENCIA, subportal)) {
        this.elasticsearchOperations.putMapping(ITEM_TRANSPARENCIA, subportal,
    String id = this.elasticsearchOperations.index(query);

    this.elasticsearchOperations.refresh(ItemTransparencia.class, true);"Indexado el item con identificador de contenido " + item.getIdentificadorContenido()
            + " para el subportal " + subportal);

    return id;


public void actualizar(String _type, IItemIndexado itemIndexado0) throws IndexadoException {
    if (null == _type || _type.isEmpty()) {
        throw new IndexadoException("El subportal es un campo obligatorio para actualizar");

    ItemTransparencia itemIndexado = (ItemTransparencia) ((itemIndexado0.getClass() != ItemTransparencia.class)
            ? this.itemToItemTransparencia(itemIndexado0) : itemIndexado0);
    // Formateamos el rango para las ordenaciones 00001, 00002, ...

    String id = this.getIdForIdContenido(_type, itemIndexado.getIdentificadorContenido());

    if (id.isEmpty()) {
        throw new IndexadoException("No existe ningún elemento indexcado en el subportal " + _type
                + " para el identificador de contenido " + itemIndexado.getIdentificadorContenido());

    UpdateQuery q = new UpdateQuery();
    UpdateRequest updateReq = new UpdateRequest();

    Map<String, Object> source = new HashMap<String, Object>();

    for (PropertyDescriptor pd : BeanUtils.getPropertyDescriptors(IItemIndexado.class)) {
        Method rm = pd.getReadMethod();
        try {

            this.generaSourceParaUpdate(source, rm, itemIndexado, pd);

        } catch (Exception e) {
            throw new IndexadoException(
                    "Error accediendo a la propiedad " + pd.getName() + " del item transparencia con id " + id, e);

    UpdateResponse ur = this.elasticsearchOperations.update(q);
    if (!ur.getId().equals(id)) {
        throw new IndexadoException("Al actualizar no se ha mantenido el id del item");
    }"Actualizado el item con identificado de contenido " + itemIndexado.getIdentificadorContenido()
            + " para el subportal " + _type);


I set the object to index and update and the type before to index or update. otherwise I set the ID to update.

I´m a little bit confused because this one doesn´t occur a lot. Sometime it happen and sometimes not.

What Can be happening?

Thank you so much!