Solr не перезаписывает - дублируются записи uniqueKey

У меня проблема с Solr 5.3.1. Моя схема довольно проста. У меня есть один uniqueKey, который является «id» в виде строки. индексируется, хранится и требуется, не многозначно.

Сначала я добавляю документы с «content_type: document_unfinished», а затемзатирать тот же документ, с тем же идентификатором, но с другим типом содержимого: документ. Документ затем дважды в индексе. Опять же, единственным uniqueKey является "id", как строка. Идентификатор исходит из первичного объекта mysql-index.

Также похоже, что это происходит не единожды:

http://lucene.472066.n3.nabble.com/uniqueKey-not-enforced-td4015086.html

http://lucene.472066.n3.nabble.com/Duplicate-Unique-Key-td4129651.html

В моем случае не все документы в индексе дублируются, только некоторые. Сначала я предполагал, что они перезаписываются при фиксации, когда в индексе существует один и тот же uniqueKey. Который, кажется, не работает, как я ожидал. Я не хочу просто обновлять некоторые поля в документе, я хочу полностью заменить его всеми дочерними элементами.

Немного статистики: около 350 тыс. Документов в индексе. В основном с childDocuments. Документы выделяются полем «content_type». Я использовал SolrJ, чтобы импортировать их таким образом:

HttpSolrServer server = new HttpSolrServer(url);
server.add(a Collection<SolrInputDocument>);
server.commit();

Я всегда добавляю целый документ со всеми детьми снова. Ничего особенного. Я получаю дубликаты документов для того же уникального ключа. Там нет боковых инъекций. Я запускаю только Solr с интегрированной Jetty. Я не открываю индекс lucene в Java "вручную".

Затем я удалил + вставил снова. Это, казалось, работало некоторое время, но затем началось при некоторых условиях и выдает следующее сообщение об ошибке:

Родительский запрос дает документ, который не соответствует родительскому фильтру

Документ, где это происходит, кажется совершенно случайным, кажется, появляется только одна вещь: это childDocument, где это происходит. Я ничего особенного не запускаю, в основном скачал с сайта пакет solr и запускаю его сbin/solr start

У кого-нибудь есть идеи?

РЕДАКТИРОВАТЬ 1

Я думаю, что нашел проблему, которая, кажется, ошибка? Чтобы воспроизвести проблему:

Я скачал Solr 5.3.1 в Debian в virtualBox и начал его сbin/solr start, Добавлено новое ядро ​​с базовым набором настроек. Ничего не изменилось в базовом наборе настроек, просто скопировал его и добавил ядро.

Это приводит к двум документам с одинаковым идентификатором в индексе:

    SolrClient solrClient = new HttpSolrClient("http://192.168.56.102:8983/solr/test1");
    SolrInputDocument inputDocument = new SolrInputDocument();
    inputDocument.setField("id", "1");
    inputDocument.setField("content_type_s", "doc_unfinished");
    solrClient.add(inputDocument);
    solrClient.commit();
    solrClient.close();

    solrClient = new HttpSolrClient("http://192.168.56.102:8983/solr/test1");
    inputDocument = new SolrInputDocument();
    inputDocument.setField("id", "1");
    inputDocument.setField("content_type_s", "doc");
    SolrInputDocument childDocument = new SolrInputDocument();
    childDocument.setField("id","1-1");
    childDocument.setField("content_type_s", "subdoc");
    inputDocument.addChildDocument(childDocument);
    solrClient.add(inputDocument);
    solrClient.commit();
    solrClient.close();

Поиск с помощью:

http://192.168.56.102:8983/solr/test1/select?q=% 3A& Мас = & отступа JSON = истина

приводит к следующему выводу:

{

  "responseHeader": {
    "status": 0,
    "QTime": 0,
    "params": {
      "q": "*:*",
      "indent": "true",
      "wt": "json",
      "_": "1450078098465"
    }
  },
  "response": {
    "numFound": 3,
    "start": 0,
    "docs": [
      {
        "id": "1",
        "content_type_s": "doc_unfinished",
        "_version_": 1520517084715417600
      },
      {
        "id": "1-1",
        "content_type_s": "subdoc"
      },
      {
        "id": "1",
        "content_type_s": "doc",
        "_version_": 1520517084838101000
      }
    ]
  }
}

Что я делаю неправильно?

Ответы на вопрос(1)

Ваш ответ на вопрос