2017-02-23 2 views
0

나는 탄성 5.1.2 버전을 사용하고 있습니다. Elastic 검색에서 문서를 게시하고 쿼리하기 위해 Elastic Java Restclient를 사용하고 있습니다.탄성 검색 GET가 최신 문서를 제공하지 않음

POST 작업 직후 GET 작업을 사용할 때 정확한 문서 수를 얻지 못합니다. POST와 GET 사이에서 1 초 이상 잠을 자면 GET 작업이 정확한 수를 제공 할 수 있습니다.

내 작업 흐름 : 1) POST 작업을 사용하여 새 트랜잭션 (문서) 게시 2) GET 작업을 사용하여 총 문서 수를 검색합니다. 이것은 POST 직후입니다.

나는 신축성이 지수를 업데이트하는 데 시간이 걸린다 고 생각합니다. Elasticsearch 또는 내 설정에 문제가있는 것입니다. 도와주세요

답변

2

정상적인 동작입니다! 새 데이터의 색인을 생성하면 즉시 사용할 수 없지만 기본적으로 매초마다 한 번씩 다음 새로 고침이 수행됩니다.

  1. 당신이 문서를 게시 한 후 /_refresh endpoint를 호출 할 수 있습니다 및
  2. 추가 할 수 즉시 인덱스와 다음 GET 호출이 작동을 새로 고쳐집니다 : 그 당신을 귀찮게하는 경우

    , 당신은 몇 가지 옵션이 있습니다 POST 호출에서 ?refresh=true parameter을 호출하면 문서를 인덱싱 할 때 기본적으로 1을 수행합니다.

  3. 문서를 인덱싱 할 때 ?refresh=wait_for parameter을 POST 호출에 추가 할 수 있으며 새로 고침 작업이 발생할 때만 호출이 반환되므로 다음 GET 호출은 d를 반환합니다. 문서
  4. 설정에서 index.refresh_interval을 줄일 수 있습니다 (기본값 1 초). 그러면 새로 고침 작업이 자주 발생합니다.

성능 측면에서 볼 때 가장 공격적이지 않은 방법은 3입니다. 즉, ES에서 도입 된 새로운 매개 변수로, 인덱스에서 새로 고침을 강제하지 않지만 한 번만 새로 색인 된 문서를 검색 할 수 있습니다. 새로 고침을 너무 자주 (1, 2 및 3) 실행하면 성능이 저하 될 수 있습니다.

+0

감사의 말 Val. 나는 새로 고침을함으로써 공연에 대해 걱정했다. 그럼에도 불구하고 여기에 샘플 데이터를 제공했지만 실제 사용 시간은 초당 30 txns이며 1 초를 기다리지 않고도 높은 성능과 정확한 수를 필요로합니다. 그것은 탄력성의 정상적인 행동이므로 옵션을 선택해야하며 옵션 3에 기대고 있습니다. 참고 문헌에 대한 자세한 답변을 보내 주셔서 감사합니다. –

+0

이 경우에도 다음과 같이 도움이 될 수 있습니다. http://stackoverflow.com/questions/31499575/how-to-deal-with-elasticsearch-index-delay/34391272#34391272 – Val

+0

해결책 해결책을 알려 주셔서 감사합니다. 내가 말했듯이, 그것은 높은 볼륨 응용 프로그램입니다. 우리는 다음과 같은 상황에 빠지지 않을 것입니다 : 1 txn을 게시하고 get을 호출하면 1 초 후에 1 초 후에 새로 고침됩니다. 1 초 동안 10 회의 트랜잭션을 추가로 제출했습니다. 11 번째 트랜잭션의 경우 get get 작업은 첫 번째 txn 게시물의 1 초 후에 완료됩니다. 제 11 회 거래에는 11 건의 거래가 모두 포함됩니까? 또는 우리가 새로 고침을 했는데도 정확히 1 초가 지나면 모든 게시물이 새로 고쳐집니다. –

관련 문제