2014-10-29 4 views
0

단일 노드에서 elasticsearch를 사용하여 데이터를 인덱싱했습니다. 최근의 변경으로 색인을 업데이트하는 데 사용되는 백그라운드에서 실행되는 스레드가 있습니다.Elastic Search는 동일한 쿼리를 여러 번 실행하면 일관성없는 결과를 반환합니다.

이제 탄성 검색어 API를 사용하여 검색어를 실행합니다.

{ 
    "from" : 0, 
    "size" : 20, 
    "timeout" : 0, 
    "query" : { 
    "filtered" : { 
     "query" : { 
     "query_string" : { 
      "query" : "Bug-157099*", 
      "default_field" : "_content", 
      "default_operator" : "and", 
      "allow_leading_wildcard" : true, 
      "analyze_wildcard" : true 
     } 
     }, 
     "filter" : { 
     "fquery" : { 
      "query" : { 
      "query_string" : { 
       "query" : "pxObjClass:(\"ProjMgmt-Work-Project\")", 
       "default_field" : "_content", 
       "default_operator" : "and", 
       "allow_leading_wildcard" : true 
      } 
      }, 
      "_cache" : false 
     } 
     } 
    } 
    }, 
    "fields" : "*" 
} 

그러나 검색 쿼리는 일치하지 않는 결과를 반환합니다. 쿼리를 계속 재실행 할 때 언젠가 우리는 0 개의 결과를 얻습니다. 때로는 부분적인 결과를 얻고 때로는 완전한 결과를 얻습니다.

하나의 노드 만 인덱싱 노드 인 클러스터에서이 문제를 직면하고 있습니다.

이 문제의 원인을 알려주십시오.

+0

당신이 우리에게 더 많은 정보를 제공 할 수를 삽입 한 : 예를 들어, 어떤 쿼리를 사용합니까? – ThomasC

+0

필터링 된 쿼리입니다. – Yasaswani

답변

1

문제는 쿼리에서 시간 초과가 설정 되었기 때문에 발생했습니다. 우리 코드의 일부에서는 타임 아웃을 0으로 설정하고 있습니다. 우리는 코드를 수정했으며 이제 쿼리가 올바르게 작동합니다.

여기 올바른 쿼리

{ 
 
    "from" : 0, 
 
    "size" : 20, 
 
    "query" : { 
 
    "filtered" : { 
 
     "query" : { 
 
     "query_string" : { 
 
      "query" : "BUg-157099*", 
 
      "default_field" : "_content", 
 
      "default_operator" : "and", 
 
      "allow_leading_wildcard" : true, 
 
      "analyze_wildcard" : true 
 
     } 
 
     }, 
 
     "filter" : { 
 
     "fquery" : { 
 
      "query" : { 
 
      "query_string" : { 
 
       "query" : "pxObjClass:(\"ProjMgmt-Work-Project\")", 
 
       "default_field" : "_content", 
 
       "default_operator" : "and", 
 
       "allow_leading_wildcard" : true 
 
      } 
 
      }, 
 
      "_cache" : false 
 
     } 
 
     } 
 
    } 
 
    }, 
 
    "fields" : "*" 
 
}

관련 문제