2017-05-09 3 views
0

내 elasticsearch 인덱스의 geo_point 필드에 대한 매핑을 업데이트하려고하지만 문제가 발생했습니다. Kibana에서 개발 도구 콘솔을 사용하고 있습니다.키 바나를 사용하여 기존 탄성 검색 인덱스 매핑 (geo_point) 덮어 쓰기/업데이트

geo_point의 데이터는 이중 배열 형식입니다. 나는 elasticsearch-hadoop-5.3.1.jar와 함께 spark를 사용하고 있으며 데이터는 elasticsearch/kibana에 들어 있지만 geo_point로 변환해야하는 동안 숫자 형식으로 유지됩니다.

일단 정의되면 인덱스 매핑을 업데이트 할 수없는 것 같습니다. 아래의 방법을 사용해 보았습니다.

PUT my_index 
{ 
    "mappings": { 
    "my_type": { 
     "properties": { 
     "my_location": { 
      "type": "geo_point" 
     } 
     } 
    } 
    } 
} 

-하지만 이로 인해 "인덱스가 이미 존재하지 않습니다"라는 오류가 발생합니다.

의견을 보내 주셔서 감사합니다.

답변

0

사용 된 명령은 언급 된 매핑을 사용하여 새 색인을 만들려고합니다. 자세한 내용은 첫 번째 예제 here에서 발 참고 사항을 읽으십시오.

Elasticsearch 설명서에 따라 기존 필드의 매핑을 업데이트 할 수 없습니다.

은 일반적으로 필드를 매핑

업데이트, 기존 필드에 대한 매핑을 업데이트 할 수 없습니다. 거기에 몇 가지 예외가 있습니다. 예 :

  • 새 속성을 Object 데이터 유형 필드에 추가 할 수 있습니다.
  • 새 필드를 기존 필드에 추가 할 수 있습니다.
  • ignore_above 매개 변수를 업데이트 할 수 있습니다. geo_point으로

위에서 언급 된 모든 경우에 해당하지 않으며, 해당 분야의 매핑을 수정할 수 없습니다.

데이터가 reindex 일 필요가 있습니다.

+0

감사합니다. 내가 공유 한 정보에 감사드립니다. 후속 작업을 수행하기 위해 위의 put 메소드를 사용하여 색인 및 매핑을 생성 한 다음 spark를 사용하여 데이터를 가져 와서 해당 항목을 덮어 쓰지 않도록합니다. 이 필드에 대한 초기 매핑이 지금까지 가장 쉬운 솔루션 인 것 같습니다. – Rob

+0

@Rob 미안하지만, 당신이 전달하려고 한 것을 얻지 못했습니다! – avr

+0

네, 지금 받으십시오. 탄성 검색에서 '명시 적 매핑'이라고합니다. 그래서이 아이디어는 elasticsearch 유추 데이터 유형을 전달하는 대신, 미리 매핑을 정의한 다음 데이터를 가져올 수 있습니다. – avr