2013-04-30 4 views
27

ElasticSearch 문서는이를 수행하는 방법에 대해 명확하지 않습니다.elasticsearch에서 필드 유형을 업데이트하는 방법

일부 트윗을 색인화하고 created_at 필드 중 하나를 날짜 대신 문자열로 색인화했습니다. 컬 변경 호출로이 변경 사항을 다시 인덱싱하는 방법을 찾을 수 없습니다. reindexing이 복잡한 프로세스라면, 나는 거기에있는 것을 삭제하고 다시 시작하는 것이 훨씬 더 낫다. 그러나 필드 유형을 지정하는 방법을 찾을 수 없습니다!

도움을 주시면 대단히 감사하겠습니다.

답변

23

당신은 다음과 같이 정의 할 수 있습니다 Put Mapping AP I.

$ curl -XPUT 'http://localhost:9200/twitter/tweet/_mapping' -d ' 
{ 
    "tweet" : { 
     "properties" : { 
      "message" : {"type" : "string", "store" : "yes"} 
     } 
    } 
} 
' 

날짜를 사용하여 매핑을 정의해야합니다 : 당신은 또한 당신이를 삽입하는 경우 만 입력하지 형식을 지정해야

{ 
    "tweet" : { 
     "properties" : { 
      "user" : {"type" : "string", "index" : "not_analyzed"}, 
      "message" : {"type" : "string", "null_value" : "na"}, 
      "postDate" : {"type" : "date"}, 
      "priority" : {"type" : "integer"}, 
      "rank" : {"type" : "float"} 
     } 
    } 
} 
+0

네처럼해야한다. 고마워요. – maximus

+0

@dadoonet 문자열을 "long"으로 변경 한 "message"필드 유형을 변경하는 방법 .Merge가 실패한 {[mapper [message]가 다른 유형 인 current_type [string] – Dibish

+1

@dibish 번호로 다시 색인을 생성해야합니다. – dadoonet

8

mysql timestamp 그런 다음에이 형식을 추가해야합니다.

"properties": { 
    "updated_at": { 
     "type": "date", 
     "format": "yyyy-MM-dd HH:mm:ss" 
    } 
} 

우리는 당신의 예를 고려하면 그것은 바로 그거야,

"tweet" : { 
    "properties" : { 
     "user" : {"type" : "string", "index" : "not_analyzed"}, 
     "message" : {"type" : "string", "null_value" : "na"}, 
     "postDate" : {"type" : "date" , "format": "yyyy-MM-dd HH:mm:ss" }, 
     "priority" : {"type" : "integer"}, 
     "rank" : {"type" : "float"} 
    } 
} 
관련 문제