우리는 레일 앱에서 타이어 보석과 함께 ElasticSearch를 사용하고 있습니다. 우리의 통합 테스트를 위해, 우리는 삭제하고 Foo
가 Tire::Model::Persistence
을 포함ElasticSearch 비동기 삭제? 200 레일스 앱에서 색인 삭제 직후
Foo.index.delete
Foo.create_elasticsearch_index
의 라인을 따라 각각의 예를하기 전에 인덱스, 뭔가를 다시 작성하십시오. 그러나 우리는 CI에서 테스트 스위트를 실행할 때 색인 오류가 누락되기 시작했습니다. 당신이 볼 수 있듯이, 나는 DELETE 요청에 대한 200 OK 응답을, 그러나 타이어가하는 경우 HEAD 요청이 있는지 확인하기 위해
# 2013-10-04 09:25:05:839 [DELETE] ("test_index")
#
curl -X DELETE http://some-server:9200/test_index
# 2013-10-04 09:25:05:840 [200]
#
# {
# "ok": true,
# "acknowledged": true
# }
# 2013-10-04 09:25:05:852 [HEAD] ("test_index")
#
curl -I "http://some-server:9200/test_index"
# 2013-10-04 09:25:05:852 [200]
: 내가 나서서 디버깅을 활성화하고 나는 로그에 다음과 같은 발견 인덱스를 생성하기 전에 존재하지만, 여전히 404 대신에 200을 리턴합니다. 이것은 무작위로 발생합니다. 대부분의 경우에는 정상적으로 작동하지만 테스트 스위트의 어느 시점에서는 실패 할 것입니다.
삭제와 생성 작업 사이에 노란색 상태가 표시 될 때까지 기다렸지만 작동하지 않았습니다. 그래서 여기에 내 질문은, 인덱스 인덱스 작업을 비동기 방식으로 무엇입니까? (그것에 대해 ES 문서에서 아무 것도 찾을 수 없습니다). 색인을 삭제할 때까지 기다리는 방법이 있습니까? (노란색 상태가 작동하지 않기 때문에).
편집 : 해명을위한 @PinnyM. 그래서 모든 작업은 HTTP API are indeed asynchronous을 통해 이루어집니다. 그래서 남은 질문은 인덱스를 삭제할 때까지 기다려야 인덱스를 다시 만들 수 있다는 것입니다.
모든 HTTP 작업은 비동기, http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-http.html – PinnyM
@PinnyM 감사를 참조하십시오! 질문을 수정했습니다 – julioolvr