2016-06-13 8 views
0

私は自分のドキュメントのカスタムスコアリング機能を作成して、ドキュメントごとにフィールドaの値を返します。しかし、何らかの理由で、下の例では、結果の中の_scoreの最後の数字は、各ドキュメントのaの値の最後の数字とは異なります。ここで何が起きてるの?Elasticsearchのカスタムスコアリング機能が期待値フィールドを返さない

{ 
    "took": 16, 
    "timed_out": false, 
    "_shards": { 
    "total": 5, 
    "successful": 5, 
    "failed": 0 
    }, 
    "hits": { 
    "total": 2, 
    "max_score": 984968060, 
    "hits": [ 
     { 
     "_index": "test", 
     "_type": "doc", 
     "_id": "2", 
     "_score": 984968060, 
     "_source": { 
      "a": 984968088 
     } 
     }, 
     { 
     "_index": "test", 
     "_type": "doc", 
     "_id": "1", 
     "_score": 851459200, 
     "_source": { 
      "a": 851459198 
     } 
     } 
    ] 
    } 
} 

はなぜフィールドaの値とは異なる_score次のとおりです。次戻ります

PUT test/doc/1 
{ 
    "a": 851459198 
} 

PUT test/doc/2 
{ 
    "a": 984968088 
} 

GET test/_search 
{ 
    "query": { 
    "function_score": { 
     "script_score": { 
     "script": { 
      "inline": "doc[\"a\"].value" 
     } 
     } 
    } 
    } 
} 

私は得点に、Elasticsearch 2.1.1

答えて

0

_score値は内部的にハードあなたが利用したい場合にのみ正確に、したがって値134217728.までの整数を表すことができfloatとしてコード化されたを使用しています関数より大きい数値として格納されているフィールドの場合、バッファオーバーフローして切り捨てられます。 this github issue

関連する問題