elasticsearch 5.0
에 색인이 생성되어 있는데 여기에는 내 MySQL
db의 데이터가 포함되어 있습니다. 내 테이블에 string
인 필드가 있습니다.이 필드는 ES에 double
으로 필요합니다. 나는 PUT
사용하여 해당 필드에 대한 인덱스를 만들 때 내가 매핑을 추가했다 않았다 그래서소수점 이하의 숫자가 0이면 double 값으로 반환하지 않습니까?
: 나는 이런 짓을 한 후, 소수점 이하 숫자가 포함 된 값을
{
"mappings": {
"my_type": {
"properties": {
"chargeamount": {
"type": "double"
}
}
}
}
}
를 (예 : 23.23)을 값을 double로 올바르게 반환하지만 10 진수 뒤에 0이있는 숫자 (즉 : 23.00)는 문자열 자체 (예 : 2300)로 반환합니다.
편집 :
나는 처음 본문으로 위의 매핑과
PUT
요청 (http://hostmachine:9402/indexname
)를 통해 인덱스를 생성 : 다음은 내가 한 단계입니다.그런 다음
logstash
을 사용하여 인덱스 (내 MySQL 테이블에서)로 푸시합니다. 필요한 경우 logstash conf를 제공 할 수 있습니다.데이터를 색인에 업로드하면 결과에 이중 값이 있는지 확인하기 위해 쿼리를 시도했습니다.
{ "size" : 0, "query":{ "query_string":{ "query":"myquery" } }, "aggs":{ "total":{ "terms":{ "field":"userid" }, "aggs":{ "total":{ "sum":{ "script":{ "lang": "painless", "inline" : "doc['chargeamount'].value" } } } } } } }
을 그리고 결과는 같은이 267472.00 봤는데한다 아래의 스냅 샷에서와 같이 보이는 : :이 POST
요청 (http://hostmachine:9402/indexname/_search?
몸은 다음과 같이
어디서 잘못 되었나요? 어떤 도움도 받으실 수 있습니다.
당신이 색인을 문서의 예를 보여줄 수,과 실행중인 명령들? – Val
@Val 예제에서 문서의 의미? 위의 매핑을 'body'로 사용하여이 ('http : // hostmachine : 9402/indexname') put 요청을 사용하여 색인을 생성했습니다. 색인을 생성 한 후'logstash'를 사용하여 색인에 데이터를 업로드하려고합니다. – Kulasangar
간단히 말하면, 실행 한 모든 명령을 표시하여 볼 수있는 것과 동일한 문제를 다시 만들 수 있습니까? – Val