Search code examples
javaspringelasticsearchspring-dataspring-data-elasticsearch

Spring Data for ElasticSearch save method increments count (incorrect) even for update


I'm having an issue in which the count keeps incrementing by 1 whenever I do an update to a document using save and the count's supposed to remain the same. If I create a document with save then the count is incremented by 2. Am I setting something wrong? This is my settings for the ElasticSearch index:

{
    "aliases": {
      "case": {}
    },
    "mappings": {
      "_doc": {
        "dynamic": false,
        "properties": {
          "created": {
            "index": true,
            "type": "date"
          },
          "modified": {
            "index": true,
            "type": "date"
          },
          "type": {
                "index": true,
                "type": "keyword", "normalizer": "lower_case_normalizer"
          },
          "states": {
            "type": "nested",
            "properties": {
              "from": {
                "index": true,
                "type": "keyword", "normalizer": "lower_case_normalizer"
              },
              "to": {
                "index": true,
                "type": "keyword", "normalizer": "lower_case_normalizer"
              },
              "event": {
                "index": true,
                "type": "keyword", "normalizer": "lower_case_normalizer"
              }
            }
          }
        }
      }
    },
    "settings": {
      "index": {
        "number_of_shards": 3,
        "number_of_replicas": 2
      },
      "analysis": {
        "normalizer": {
          "lower_case_normalizer": {
              "type": "custom",
              "char_filter": [],
              "filter": ["lowercase", "asciifolding"]
          }
        }
      }
    }
  }

This is how I insert a document into ES:

public Case createCase(final Case case) throws UnableToGenerateUUIDException {

    final UUID caseId = uuidService.getNowTimeUUID();
    final Instant now = Instant.now();
    case.setCreated(now);
    case.setModified(now);
    case.setId(caseId.toString());

    return caseRepository.save(case);
}

Solution

  • This is the bug from the Chrome extension I used, not from Spring Data. I apologize for the mistake. I have verified that the count() from Spring Data reflects the correct number.