Tôi đã tạo chỉ mục elasticsearch và ánh xạ hiện tại của tôi lưu trữ số tiền đô la của một mục dưới dạng một chuỗi. Điều này chứng minh là khó khăn vì tôi không thể tìm kiếm/lọc chính xác giá trị này.Cách lưu trữ tiền trong elasticsearch
GET catalog/product/_search
{
"filter": {
"range": {
"price": {
"from": 230.0,
"to": 300.0
}
}
}
}
Giá giá được ánh xạ dưới dạng chuỗi. Tôi sử dụng một chuỗi bởi vì đi từ một giá trị thập phân python, tôi đã có vấn đề mà giá trị này đột nhiên nhận được giá trị tại một cái gì đó như 17.989999999999999999998789. Điều này chỉ xảy ra đôi khi nhưng tôi không muốn nhận được vào vấn đề đi từ một số thập phân python đến một java đôi/float (vì vậy tôi chỉ str() điều).
Bất kỳ suy nghĩ nào về cách tiếp cận tốt hơn? Tôi có nên cắn viên đạn và bản đồ giá thành một đôi hoặc một phao?
Vấn đề là ElasticSearch không có loại 'thập phân' để nó có thể được chuyển đổi thành' float'. Nhân với 100 và lưu trữ dưới dạng xu, sau đó chuyển đổi phía ứng dụng? Tạm biệt các vấn đề chính xác. –
Đó là một ý tưởng tuyệt vời. Nếu bạn trả lời, tôi có thể đánh dấu nó như vậy. Vấn đề duy nhất là trả lại rất nhiều dữ liệu, lặp lại tất cả các mục đó có thể là mặt ứng dụng tốn kém (chậm). Tôi có thể sử dụng một tập lệnh ES nhưng cũng chậm quá. – stincity
Bạn cũng có thể muốn xem câu trả lời đầu tiên của câu hỏi này http://stackoverflow.com/questions/1458633/how-to-deal-with-floating-point-number-precision-in-javascript – Val