2016-11-01 2 views
0

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)로 반환합니다.

편집 :

  1. 나는 처음 본문으로 위의 매핑과 PUT 요청 (http://hostmachine:9402/indexname)를 통해 인덱스를 생성 : 다음은 내가 한 단계입니다.

  2. 그런 다음 logstash을 사용하여 인덱스 (내 MySQL 테이블에서)로 푸시합니다. 필요한 경우 logstash conf를 제공 할 수 있습니다.

  3. 데이터를 색인에 업로드하면 결과에 이중 값이 있는지 확인하기 위해 쿼리를 시도했습니다.

    { 
         "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? 몸은 다음과 같이

enter image description here

어디서 잘못 되었나요? 어떤 도움도 받으실 수 있습니다.

+0

당신이 색인을 문서의 예를 보여줄 수,과 실행중인 명령들? – Val

+0

@Val 예제에서 문서의 의미? 위의 매핑을 'body'로 사용하여이 ('http : // hostmachine : 9402/indexname') put 요청을 사용하여 색인을 생성했습니다. 색인을 생성 한 후'logstash'를 사용하여 색인에 데이터를 업로드하려고합니다. – Kulasangar

+2

간단히 말하면, 실행 한 모든 명령을 표시하여 볼 수있는 것과 동일한 문제를 다시 만들 수 있습니까? – Val

답변

1

당신은 당신의 인덱스 생성 쿼리에 매핑 유형, 즉 message_logs 정확하게 당신이 당신의 logstash의 설정에있는 document_type와 동일한 지 확인해야합니다

PUT response_summary6 
{ 
    "mappings": { 
    "message_logs": {   <--- change this 
     "properties": { 
     "userid": { 
      "type": "text", 
      "fielddata": true 
     }, 
     "responsecode": { 
      "type": "integer" 
     }, 
     "chargeamount": { 
      "type": "double" 
     } 
     } 
    } 
    } 
} 
관련 문제