2014-07-09 73 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

相关问题