2017-01-18 17 views
0

私はファセット用語のクエリ(ElasticSearch 1.7.0)にいくつかの問題があり、すべての浮動小数点値はデータベースとelasticsearchのバルクにも正しく格納されていますが、その値は "2.99000000954"のようになります。ElasticSearchファセットの用語クエリの浮動小数点精度

"2.99000000954"でリクエストしたとき、エンジンはこのデータに関連する良い記事、「2.99」の値を持つ記事を見つけたということです。

以下のコードファイルの外観とカール呼び出し要求を持ってください。

マッピング(_plugin /頭から)

"pvi": { 
    "include_in_all": false, 
    "type": "float", 
    "fields": { 
     "raw": { 
      "type": "float" 
     }, 
     "sort": { 
      "type": "float" 
     } 
    } 
} 

elastic_bulk_Article_en_XXX.json0

{ 
    "pvi": [ 
    "2.99" 
    ], 
} 

カールコール

curl -XGET 'http://elasticsearch:9200/entrepriseName_search_index_fr_fr/Article/_search' -d '{"query":{"filtered":{"query":{"match_all":{}},"filter":[]}},"aggs":{"pvi":{"filter":{"query":{"query_string":{"query":"*","fuzzy_prefix_length":1,"fields":["pvi"]}}},"aggs":{"pvi":{"terms":{"field":"pvi","size":25,"order":{"_term":"asc"}}}}}},"size":0}' 

カールコール結果

{ 
    "aggregations": { 
    "pvi": { 
     "doc_count": 1007, 
     "pvi": { 
     "doc_count_error_upper_bound": 0, 
     "sum_other_doc_count": 0, 
     "buckets": [ 
      { 
      "key": 1, 
      "doc_count": 1 
      }, 
      { 
      "key": 2.99000000954, 
      "doc_count": 1 
      }, 
      { 
      "key": 3.99000000954, 
      "doc_count": 6 
      }, 
      { 
      "key": 4.98999977112, 
      "doc_count": 33 
      }, 
      { 
      "key": 5.98999977112, 
      "doc_count": 46 
      }, 
      { 
      "key": 6.98999977112, 
      "doc_count": 11 
      }, 
      { 
      "key": 7.98999977112, 
      "doc_count": 69 
      }, 
      { 
      "key": 9.98999977112, 
      "doc_count": 78 
      }, 
      { 
      "key": 12.9899997711, 
      "doc_count": 107 
      }, 
      { 
      "key": 15.9899997711, 
      "doc_count": 135 
      }, 
      { 
      "key": 17.9899997711, 
      "doc_count": 60 
      }, 
      { 
      "key": 19.9899997711, 
      "doc_count": 158 
      }, 
      { 
      "key": 22.9899997711, 
      "doc_count": 17 
      }, 
      { 
      "key": 25.9899997711, 
      "doc_count": 143 
      }, 
      { 
      "key": 27.9899997711, 
      "doc_count": 2 
      }, 
      { 
      "key": 29.9899997711, 
      "doc_count": 70 
      }, 
      { 
      "key": 35.9900016785, 
      "doc_count": 25 
      }, 
      { 
      "key": 39, 
      "doc_count": 1 
      }, 
      { 
      "key": 39.9900016785, 
      "doc_count": 28 
      }, 
      { 
      "key": 49.9900016785, 
      "doc_count": 12 
      }, 
      { 
      "key": 59.9900016785, 
      "doc_count": 3 
      }, 
      { 
      "key": 69.9899978638, 
      "doc_count": 1 
      } 
     ] 
     } 
    } 
    }, 
    "query": null, 
    "checked": "{}" 
} 
+0

この回答は役に立ちました:http://stackoverflow.com/questions/38952262/elasticsearch-max-length-of-mapping-type-long/38952540#38952540 – Val

+0

@Valご意見ありがとうございます。悲しいことに、解決策は私のために働くことはできません、elasticsearchバルクファイルの値は、すでに文字列データ型として格納されています。 – keupsonite

+0

私は単にヒントを得ていたのは、floatに共通する丸め問題に苦しんでいるということです。 – Val

答えて

0

私は解決策を見つけた、私は長い間、すべて作品にフロートからのデータ型を変更!

関連する問題