我正在尝试索引一个有 50,000 条日志的 12mb 日志文件。索引大约 30,000 条日志后,出现以下错误
[2018-04-17T05:52:48,254][INFO ][logstash.outputs.elasticsearch] retrying failed action with response code: 429 ({"type"=>"es_rejected_execution_exception", "reason"=>"rejected execution of org.elasticsearch.transport.TransportService$7@560f63a9 on EsThreadPoolExecutor[name = EC2AMAZ-1763048/bulk, queue capacity = 200, org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor@7d6ae98b[Running, pool size = 2, active threads = 2, queued tasks = 200, completed tasks = 3834]]"})
Run Code Online (Sandbox Code Playgroud)
但是,我浏览了文档和 elasticsearch 论坛,它们建议我增加 elasticsearch 批量队列的大小。我尝试使用 curl 但我无法做到这一点。
curl -XPUT localhost:9200/_cluster/settings -d '{"persistent" : {"threadpool.bulk.queue_size" : 100}}'
Run Code Online (Sandbox Code Playgroud)
增加队列大小是个好选择吗?我无法增加硬件,因为我的数据较少。
我面临的错误是由于队列大小问题还是其他原因?如果使用队列大小如何更新elasticsearch.yml中的队列大小,在elasticsearch.yml中更新后是否需要重新启动es?
请告诉我。谢谢你的时间
我正在努力使用 DRF(Django Rest Framework)创建 RESTAPI。API 只是接收用户的 Twitter 句柄并返回他的 Twitter 数据。
在这里,我没有使用模型,因为它不是必需的。
我应该在这里使用序列化器吗?如果是这样为什么?现在我可以在不使用序列化器的情况下返回数据。此外,我的 API 不可通过网络浏览。我应该如何使其可网络浏览:这是 DRF 的最佳功能之一。
编辑:1
我在视图中使用函数。
@api_view(['GET'])
@csrf_exempt
def getdetails(request):
call the twitter api
receive the data
return HttpResponse(JsonResponse( {'data': {'twitter_id':id,'tweets':count,'Followers':followers,'following':count_follow}}))
Run Code Online (Sandbox Code Playgroud)
在浏览器中我只看到这样的 JSON 数据。
{“数据”:{“twitter_id”:352525,“推文”:121,“关注者”:1008,“关注”:281}}