Python Elasticsearch, создающий много индексов, приводит к превышению лимита шарда - PullRequest
0 голосов
/ 29 апреля 2020

Сначала извините из-за моего английского sh. Так что у меня есть текстовые файлы в алгоритме дерева с глубиной 2di git (1.367 файлов, 37 папок), выглядит так

a(folder)
  a-b-c-d-e .... z (files)
b(folder)
  a-b-c-d-e .... z (files)
...
z(folder)
  a-b-c-d-e .... z (files)

Итак, я попытался чтобы импортировать эти файлы в Elasticsearch следующим образом,

def index_create(es, index_name):
    if not es.indices.exists(index_name):
        mapping = {
            "settings": {
                "number_of_replicas": 0,
                "auto_expand_replicas": False,
            },

            "mappings": {
                "properties": {
                    "name": {
                        "type": "keyword"
                    },
                    "lastname": {
                        "type": "keyword"
                    }
                },
            }
        }
        res = es.indices.create(
            index=index_name,
            body=mapping
        )
        print(res)

Я пытаюсь создать индексы

aa-ab-ac-ad ... az
ba-bb-bc-bd ... bz
..... 
...... 
za-zb-zc-zd ... zz

По сути, мне нужно создать 1,376 для 1,367 файлов, но из-за ошибки " shard limit "

{u'index': u'nn', u'acknowledged': True, u'shards_acknowledged': True}
{u'index': u'no', u'acknowledged': True, u'shards_acknowledged': True}
{u'index': u'np', u'acknowledged': True, u'shards_acknowledged': True}
{u'index': u'nq', u'acknowledged': True, u'shards_acknowledged': True}
{u'index': u'nr', u'acknowledged': True, u'shards_acknowledged': True}
{u'index': u'ns', u'acknowledged': True, u'shards_acknowledged': True}
Traceback (most recent call last):
  File "treeGeneratorForElasticSearch.py", line 47, in <module>
    index_create(es, root+x+y)
  File "treeGeneratorForElasticSearch.py", line 29, in index_create
    body=mapping
  File "C:\Python27\lib\site-packages\elasticsearch\client\utils.py", line 84, in _wrapped
 return func(*args, params=params, **kwargs)
 File "C:\Python27\lib\site-packages\elasticsearch\client\indices.py", line 100, in create
 "PUT", _make_path(index), params=params, body=body
   File "C:\Python27\lib\site-packages\elasticsearch\transport.py", line 358, in perform_request
   timeout=timeout,
  File "C:\Python27\lib\site-packages\elasticsearch\connection\http_urllib3.py", line 261, in 
 perform_request
   self._raise_error(response.status, raw_data)
  File "C:\Python27\lib\site-packages\elasticsearch\connection\base.py", line 182, in _raise_error
    status_code, error_message, additional_info
  elasticsearch.exceptions.RequestError: RequestError(400, u'validation_exception', u'Validation 
 Failed: 1: this action would add [2] total shards, but this cluster currently has [1000]/[1000] 
 maximum shards open;')

Это ошибка, которую я получаю после создания ровно 500 индексов. Я знаю, что это глупый способ создания указателей, но похоже, что Elasticsearch не использует подпункты или подобные вещи. подскажите простой способ импортировать мою базу данных в Elasticsearch? У меня примерно 3-4 ТБ данных, поэтому мне нужно разделить базу данных, чтобы ускорить поиск. Как я могу правильно поместить эти базы данных в Elasticsearch?

Надеюсь, каждый может понять, чего я хочу ..

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