Elasticsearch python создает псевдоним из json - PullRequest
0 голосов
/ 23 марта 2020

Очень плохо знаком с эластичным поиском

Попытка инициализировать индекс с json с использованием API-интерфейсаasticsearch-py; используя этот простой файл json, чтобы понять, как он работает

{
  "index": "index_name",
  "body": {
    "aliases": {
      "actions": [
        { "add": { "index": "index_name",  "alias": "alias1" } }
      ]
    },
    "mappings": {
      "properties": {
        "age":    { "type": "integer" },
        "email":  { "type": "keyword"  },
        "name":   { "type": "text"  }
      }
    },
    "settings": {
      "number_of_shards":   2,
      "number_of_replicas": 1,
      "index.refresh_interval": "120s"
    }
  }
}

(прочитать файл json, разобрать index и body), а затем важную python часть es.indices.create(index=index, body=body)

Но я получаю сообщение об ошибке:

elasticsearch.exceptions.TransportError: TransportError(500, 'null_pointer_exception', 'fieldName cannot be null')

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

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

Как говорится в принятом ответе, я не смог прочитать документы. Публикация того, что у меня получилось, для записи

файл config.json будет выглядеть так:

"index": "index_1",
"aliases": ["alias1", "alias2"],
"body": {
  "mappings": {...},
  "settings": {...}
}

И python

_json = json.load(file)
index = _json['index']
aliases = _json['aliases']
body = _json['body']

es.indices.create(index=index, body=body)
if len(aliases) > 0:
       for alias in aliases:
           es.indices.put_alias(index=index, name=alias)
0 голосов
/ 23 марта 2020

Как говорит исходный код из elasticsearch-py, аргумент body indices.create не может содержать псевдонимов:

body: конфигурация для индекса ( settings и mappings)

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

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