#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.