2015-02-02 29 views
29
from datetime import datetime 
from elasticsearch import Elasticsearch 
es = Elasticsearch() 

doc = { 
    'author': 'kimchy', 
    'text': 'Elasticsearch: cool. bonsai cool.', 
    'timestamp': datetime(2010, 10, 10, 10, 10, 10) 
} 
res = es.index(index="test-index", doc_type='tweet', id=1, body=doc) 
print(res['created']) 

này simples code được trả lại lỗi sau:Connection Timeout với Elasticsearch

elasticsearch.exceptions.ConnectionTimeout: ConnectionTimeout caused by - ReadTimeoutError(HTTPConnectionPool(host='localhost', port=9200): Read timed out. (read timeout=10)) 

Rất kỳ lạ, bởi vì máy chủ đã sẵn sàng và thiết lập (http://localhost:9200/ đang trở lại một số json).

Cảm ơn trước!

Trả lời

0

elasticsearch.exceptions.ConnectionTimeout: ConnectionTimeout caused by - ReadTimeoutError(HTTPConnectionPool(host='localhost', port=9200): Read timed out. (read timeout=10)) có nghĩa là yêu cầu không kết thúc trong thời gian quy định (theo mặc định, timeout = 10).

này sẽ làm việc với 30 giây:

res = es.index(index="test-index", doc_type='tweet', id=1, body=doc, timeout=30)

26

Theo mặc định, giá trị thời gian chờ là 10 giây. Nếu bạn muốn thay đổi giá trị thời gian chờ toàn cầu, điều này có thể đạt được bằng cách đặt cờ timeout = your-time trong khi tạo đối tượng.

Nếu bạn đã tạo đối tượng mà không chỉ định giá trị thời gian chờ, thì bạn có thể đặt giá trị thời gian chờ cho yêu cầu cụ thể bằng cách sử dụng cờ request_timeout = your-time trong truy vấn.

es.search(index="my_index", 
      doc_type="document", 
      body=get_req_body(), 
      request_timeout=30) 
+0

Điều này có thể được đặt thành 60 không? tôi nhận được thời gian chờ ngay cả sau khi thiết lập nó 30 – Kishan

+0

@ Sơn là cơ thể của bạn lớn như thế nào? –

+0

Xin chào, @RohitPatwa sự cố của tôi đã được giải quyết bằng cách giảm độ dài của tài liệu. Tôi không nhớ cơ thể lớn đến mức nào. Cảm ơn sự giúp đỡ :) – Kishan

6

Sự cố kết nối hết thời gian có thể xảy ra nếu bạn đang sử dụng dịch vụ Tìm kiếm đàn hồi của Amazon.

es = Elasticsearch ([{ 'host': 'xxxxxx.us-east-1.es.amazonaws.com', 'cổng': 443, 'use_ssl': True}])

Trên đây mã python nơi bạn ghi đè cổng mặc định từ 9200 đến 443 và thiết lập ssl thành true sẽ giải quyết vấn đề.

Nếu không có cổng được chỉ định, nó đang cố gắng để kết nối với pprt 9200 trong các máy chủ định và thất bại sau thời gian ra

2

Đây là không có gì để làm với sự gia tăng thời gian chờ của bạn đến 30 giây. Mọi người có thực sự nghĩ rằng tìm kiếm đàn hồi cần đến 30 giây để trả lại một lần truy cập nhỏ không?

Con đường tôi cố định vấn đề này là đi đến config/elasticsearch.yml bỏ ghi chú như sau

http.port: 9200 
network.host: 'localhost' 

Network.host có thể được thiết lập để 192.168.0.1 mà có thể làm việc Nhưng tôi chỉ thay đổi nó để 'localhost'

+3

Nếu máy chủ quá bận rộn, có, bạn có thể có lỗi này với một cú đánh nhỏ. –

Các vấn đề liên quan