Эластичный поиск недопустимый тип формата версии и исключение illegal_argument_exception

#python-3.x #elasticsearch

#python-3.x #эластичный поиск

Вопрос:

код python

 request_body = {
    "settings": {
        "index" : {"number_of_shards" : 1, "number_of_replicas" : 0 
      }},
    "mappings": {
        "document": {"dynamic": "strict","properties": {
                "doc_name": { "type": "text"},                   
                "doc_location" : { "type" : "text" },
                "doc_keywords": { "type": "nested","properties": {
                        "dynamic": "true","tag": {"type": "text"},
                        "score": {"type": "text"}
                    } } }} }}
 es_object.indices.create(index=index_name, ignore=400,body=request_body)


def store_document(es_object, index_name, doc_name, doc_location, result_dictionary):
    keyword_nested_obj = []
    for key, value in result_dictionary.items():
        keyword_nested_obj.append({"tag":key, "score":value})
    doc = {
        "doc_name" : doc_name,
        "doc_s3_location" : doc_s3_location,
        "doc_keywords" : keyword_nested_obj
    }
    es_object.index(index = index_name, doc_type = 'document', body=doc)

#sample data storage
doc_location = "link"
doc_name = "00000020"
result_dictionary = {}
result_dictionary['Duplex and color Doppler'] = 0.7
result_dictionary['Compressibility'] = 0.6
result_dictionary['augmentation'] = 0.7

# Call the function
store_document(es_object, "documentrepository", doc_name, doc_location,
 result_dictionary)
  

Приведенный ниже поиск выдает ошибку

 json_q = json.dumps({"query": { "match_all": {}}})
res = es_object.search(index="documentrepository", doc_type="document", 
body=json_q)
  

Ошибка:

 RequestError: RequestError(400, 'illegal_argument_exception', 'invalid 
version format: {}}}GET /DOCUMENTREPOSITORY/DOCUMENT/_SEARCH HTTP/1.1')
  

Сервер Elasticsearch версии 6.7.1 также драйвер python> 6.
Также приведенный выше фрагмент кода отлично работает с elastic-search 5.6.8 и драйвером python 5.5.3
Есть какие-либо выводы?

Ответ №1:

Для сообщества, публикующего ответ, в самом начале я думал, что это может быть проблема несоответствия версии. В основном в конфигурации AWS транспортный порт (по умолчанию 9300) закрыт для другого экземпляра ec2, который был пропущен при установке 6.7.1.

установите elasticsearch на aws

Руководство по эластичному поиску