asticsearch прекращает добавлять документы после некоторой точки - PullRequest
0 голосов
/ 18 июня 2019

Я новичок вasticsearch и хочу проиндексировать множество предложений для их эффективного поиска.Сначала я пробовал массовое добавление в индекс, но у меня это не получалось, поэтому теперь я добавляю предложения одно за другим, используя следующий фрагмент кода (python):

c = pycurl.Curl()
add_document(c, 'myIndexName', 'someJsonString', 99)

def add_document(c, index_name, js, _id):

    c.setopt(c.POST, 1)
    c.setopt(c.URL, 'localhost:9200/%s/sentence/%i' % (index_name, _id))
    c.setopt(c.POSTFIELDS, json.dumps(js))
    c.perform()

Где яЯ увеличиваю идентификатор, и пример входной строки json будет:

{"sentence_id": 2, "article_name": "Kegelschnitt", "paragraph_id": 1, "plaintext": "Ein Kegelschnitt ist der zweidimensionale Sonderfall einer Quadrik .", "postags": "Ein/ART Kegelschnitt/NN ist/VAFIN der/ART zweidimensionale/ADJA Sonderfall/NN einer/ART Quadrik/NE ./$."}

Пока все хорошо, кажется, работает.Я подозреваю, что заставить это работать в режиме массового импорта намного эффективнее, но, поскольку это единовременный процесс, эффективность не является моей главной задачей.Я использую этот запрос (в командной строке), чтобы получить обзор моих индексов:

curl 'localhost:9200/_cat/indices?v'

Что дает мне (для соответствующего индекса):

health status index             pri rep docs.count docs.deleted store.size pri.store.size 
yellow open   wiki_dump_jan2019   5   1     795502       276551    528.1mb        528.1mb 

Аналогично,запрос:

curl -XGET 'localhost:9200/wiki_dump_jan2019/sentence/_count?pretty' -H 'Content-Type: application/json' -d '{"query": {"match_all": {}}}'

возвращает

{
  "count" : 795502,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  }
}

Сообщая, что в моем индексе 795,502 предложения.

Моя проблема в том, что в общей сложности я делаю более 23 миллионов вставок.Я понимаю, что вполне может быть несколько повторяющихся предложений, но проверил это и нашел более 21 миллиона уникальных предложений.Мой код Python работал нормально, без ошибок, и я проверил логи эластичного поиска и не нашел там ничего тревожного.Я немного не уверен насчет количества документов, удаленных из индекса (276.551, см. Выше), но я понял, что это может быть связано с переиндексацией, дублированием и не обязательно должно быть проблемой (и в любом случаеВ этом случае общее количество документов и удаленных документов все еще намного ниже моего количества предложений).

Единственное, что я смог найти (приблизившись к моей проблеме), было это сообщение: asticsearch через некоторое время прекращает индексировать новые документы, используя Tire , но следующий запрос:

curl -XGET 'localhost:9200/_nodes/stats/process?filter_path=**.max_file_descriptors'

возвращает:

{"nodes":{"hoOAMZoCTkOgirg6_aIkUQ":{"process":{"max_file_descr^Ctors":65536}}}}

, поэтому, как я понял после установки, по умолчанию установлено максимальное значение, и это не должно быть проблемой.

Любой, кто может пролить свет наэто?

ОБНОВЛЕНИЕ: Хорошо, я думаю, что я официально глупый.Моя проблема заключалась в том, что я использовал в качестве идентификатора индекса в качестве идентификатора в процессе добавления / вставки идентификатор.Это предложение_представляется из одного конкретного документа, поэтому максимальное количество документов (предложений) в моем индексе будет самым высоким предложением (в самом длинном документе в моем наборе данных, по-видимому, 795502 предложения).Он просто переписывал все записи после каждого документа ... Извините, что потратил ваше время, если вы прочитали это.НЕ проблема эластичного поиска;ошибка в моем коде Python (за пределами отображаемой функции выше).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...