2014-07-09 70 views
4

我試圖對兩個字段進行排序,一個是日期字段,另一個是整數字段。我已經驗證字段映射正確,並且所有索引文檔的值都具有正確的數據類型,但每次我嘗試按數字字段進行排序時,I ES都會返回一個異常[java.lang.NumberFormatException:無效的移位prefixCoded字節中的值(編碼值真的是INT?)]。Elasticsearch NumberFormatException按數字和日期字段進行排序時

奇怪的是,它返回的結果,他們似乎被正確排序,所以我不完全確定這是什麼效果,但我知道我不應該在響應中的任何錯誤。

這裏是一個映射:

這裏是拋出異常的查詢:

POST /blcdt.products/review_143758/_search?pretty=true 
{ 
    "query": { 
     "filtered": { 
     "filter": [ 
      { 
       "term": { 
        "review_category": "Game Reviews" 
       } 
      } 
     ] 
     } 
    }, 
    "from": 0, 
    "size": 8, 
    "sort": [ 
     { 
     "review_type_priority": { 
      "order": "desc" 
     } 
     }, 
     { 
     "date_reviewed": { 
      "order": "desc" 
     } 
     } 
    ], 
    "fields": [ 
     "review_title", 
     "review_type", 
     "score" 
    ] 
} 

,這裏是從ES縮寫響應:

{ 
    "took": 2, 
    "timed_out": false, 
    "_shards": { 
     "total": 5, 
     "successful": 1, 
     "failed": 4, 
     "failures": [ 
     { 
      "index": "blcdt.products", 
      "shard": 2, 
      "status": 500, 
      "reason": "QueryPhaseExecutionException[[blcdt.products][2]: query[filtered(ConstantScore(cache(review_category:Game Reviews)))->cache(_type:review_143758)],from[0],size[8],sort[<custom:\"review_type_priority\": org.elasticse[email protected]44ecbc5>!,<custom:\"date_reviewed\": org.elasticse[email protected]5123f4b8>!]: Query Failed [Failed to execute main query]]; nested: ElasticsearchException[java.lang.NumberFormatException: Invalid shift value in prefixCoded bytes (is encoded value really an INT?)]; nested: UncheckedExecutionException[java.lang.NumberFormatException: Invalid shift value in prefixCoded bytes (is encoded value really an INT?)]; nested: NumberFormatException[Invalid shift value in prefixCoded bytes (is encoded value really an INT?)]; " 
     }, 
     { 
      "index": "blcdt.products", 
      "shard": 3, 
      "status": 500, 
      "reason": "QueryPhaseExecutionException[[blcdt.products][3]: query[filtered(ConstantScore(cache(review_category:Game Reviews)))->cache(_type:review_143758)],from[0],size[8],sort[<custom:\"review_type_priority\": org.elasticse[email protected]281d24cc>!,<custom:\"date_reviewed\": org.elasticse[email protected]115ae1a7>!]: Query Failed [Failed to execute main query]]; nested: ElasticsearchException[java.lang.NumberFormatException: Invalid shift value in prefixCoded bytes (is encoded value really an INT?)]; nested: UncheckedExecutionException[java.lang.NumberFormatException: Invalid shift value in prefixCoded bytes (is encoded value really an INT?)]; nested: NumberFormatException[Invalid shift value in prefixCoded bytes (is encoded value really an INT?)]; " 
     }, 
     { 
      "index": "blcdt.products", 
      "shard": 4, 
      "status": 500, 
      "reason": "QueryPhaseExecutionException[[blcdt.products][4]: query[filtered(ConstantScore(cache(review_category:Game Reviews)))->cache(_type:review_143758)],from[0],size[8],sort[<custom:\"review_type_priority\": org.elasticse[email protected]41238b2a>!,<custom:\"date_reviewed\": org.elasticse[email protected]48593cf>!]: Query Failed [Failed to execute main query]]; nested: ElasticsearchException[java.lang.NumberFormatException: Invalid shift value in prefixCoded bytes (is encoded value really an INT?)]; nested: UncheckedExecutionException[java.lang.NumberFormatException: Invalid shift value in prefixCoded bytes (is encoded value really an INT?)]; nested: NumberFormatException[Invalid shift value in prefixCoded bytes (is encoded value really an INT?)]; " 
     }, 
     { 
      "index": "blcdt.products", 
      "shard": 0, 
      "status": 500, 
      "reason": "QueryPhaseExecutionException[[blcdt.products][0]: query[filtered(ConstantScore(cache(review_category:Game Reviews)))->cache(_type:review_143758)],from[0],size[8],sort[<custom:\"review_type_priority\": org.elasticse[email protected]1cbd767c>!,<custom:\"date_reviewed\": org.elasticse[email protected]5aadd5a1>!]: Query Failed [Failed to execute main query]]; nested: ElasticsearchException[java.lang.NumberFormatException: Invalid shift value in prefixCoded bytes (is encoded value really an INT?)]; nested: UncheckedExecutionException[java.lang.NumberFormatException: Invalid shift value in prefixCoded bytes (is encoded value really an INT?)]; nested: NumberFormatException[Invalid shift value in prefixCoded bytes (is encoded value really an INT?)]; " 
     } 
     ] 
    }, 
    "hits": { 
     "total": 41, 
     "max_score": null, 
     "hits": [ 
     { 
      "_index": "blcdt.products", 
      "_type": "review_143758", 
      "_id": "599606", 
      "_score": null, 
      "fields": { 
       "score": [ 
        8 
       ], 
       "review_type": [ 
        "review" 
       ], 
       "review_title": [ 
        "Entwined review" 
       ] 
      }, 
      "sort": [ 
       100, 
       1403648392 
      ] 
     }, 
     ... 
     { 
      "_index": "blcdt.products", 
      "_type": "review_143758", 
      "_id": "452429", 
      "_score": null, 
      "fields": { 
       "score": [ 
        9 
       ], 
       "review_type": [ 
        "review" 
       ], 
       "review_title": [ 
        "Dark Souls II review" 
       ] 
      }, 
      "sort": [ 
       100, 
       1394840094 
      ] 
     } 
     ] 
    } 
} 
+0

您發送給ES的數據類型是什麼? – Ashalynd

+0

看看這個:http://elasticsearch-users.115913.n3.nabble.com/Number-Format-Exception-td1474946.html –

+0

你的索引中是否有多個類型? –

回答

4

我想出瞭如何解決這個問題,但我不知道它爲什麼修復它。通過將'review_type_priority'的數據類型從整數更改爲long,它不再拋出異常,現在我得到了所有我應該得到的評論。任何人都在關注爲什麼這個領域需要很長時間?

+0

Hi @sphoid。在您的原始示例中,您是否使用映射創建了索引,然後立即開始索引,或者在這兩個步驟之間是否存在延遲?你有多少個節點? – DrTech

+0

此鏈接可能會有所幫助。 https://github.com/elastic/elasticsearch/issues/9191 –

+0

在我的情況下,它是由於我意外地嘗試將一個列表輸入到映射只允許長整數的字段中 –

1

我遇到了類似的問題,我在某些碎片上遇到了故障,而在其他碎片上沒有。事實證明,我刪除了文檔,刪除了映射,爲一個字段添加了更新數據類型的新映射,再次添加了文檔,並且我的聚合未能分析我已更改映射的字段。

什麼固定的問題進行優化,其中故障是發生在指數:

POST logstash-2014.08/_optimize?max_num_segments=1&wait_for_merge=false 

(在感應)

據一些Lucene的文檔,我發現,一類指標甚至可以保存畢竟索引中的文檔將被刪除,並且優化索引會刷新類型索引。你可以看到一些關於優化索引的ES文檔here

相關問題