2014-10-29 56 views
0

我們使用單個節點上的elasticsearch對索引數據進行了索引。我們有一個在後臺運行的線程用於更新最近更改的索引。彈性搜索在多次運行相同查詢時返回不一致的結果

現在我們使用彈性搜索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 2014-10-29 10:48:50

+0

其過濾的查詢。 – Yasaswani 2014-10-29 11:25:45

回答

1

問題是由於查詢中設置的超時造成的。在我們代碼的某些部分,我們將超時設置爲零。我們更正了代碼,現在查詢工作正常。

我已經在這裏插入正確的查詢

{ 
 
    "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" : "*" 
 
}

相關問題