2017-04-15 1 views
0

에 d 스트림을 쓰고 난 JavaDStream 쓰고 방법을 JavaEsSparkStreaming.saveToEs를 이용한 탄성 검색에 스파크 트윗 유형의 객체를 포함하고있다. 아래는 내 Tweet 클래스의 정의입니다.인코딩 필드 탄성 검색

public class Tweet implements Serializable{ 

String longitude; 
String latitude; 
String sentiment; 
String text; 
String post_date; 
String geo_point; 

geo_point에서 경도, 위도가 추가됩니다.

이 DStream을 ES에 쓸 때 geo_point 필드 유형이 텍스트로 표시되며 키바나에서 지리 정보에 시각화하기 위해 사용할 수 없습니다. es.index.auto.create = true로 설정했습니다. 해당 필드의 유형을 geo_point로 변환하여 Kibana Map에서 사용할 수 있도록하려면 어떻게해야합니까?

+0

인덱스 유형을 올바르게 정의 했습니까? 'Tweet'은 자바 빈즈입니까? 'geo_point' 문자열은 어떻게 보이나요? 더 많은 정보를 제공해주십시오. – Vidya

답변

0

수정 된 답변 :

기존 색인에는 Elasticsearch 데이터 형식 매핑을 적용 할 수 없습니다. 특정 인덱스에 대한 데이터를 처리하기 전에 ES 템플릿을 만들어야합니다.

인덱스 템플릿 :

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html

가 키바를위한 지오 유형을 정의는 :

https://www.elastic.co/guide/en/elasticsearch/reference/5.3/geo-point.html

+0

똑같은 시도. 여전히 유형은 문자열로 표시되며 맵에서 사용할 수 없습니다. 그런 다음 데이터 탄성 검색을 작성하기 전에 Java 코드에서 새 인덱스를 작성하고 해당 인덱스에 geo_point 유형의 geo_point 필드를 표시했습니다. 그런 다음 데이터 덤핑을 시작했습니다. 그 지금 일하고있어. –

+0

일단 색인이 생성되면 기존 필드에 대한 매핑을 변경할 수 없습니다. 가장 좋은 방법은 elasticsearch에 데이터를 처리하기 전에 템플릿을 만드는 것입니다. https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html – Sindhu

+0

신두 : 입력 해 주셔서 감사합니다. 계속했다. –

1

그것의 지금 해결했다. geo_point와 같이 Java 코드 및 표시된 필드 유형을 사용하여 ES에서 데이터를 덤프하기 전에 작성된 색인. 그런 다음 ES에서 데이터를 덤핑하기 시작했습니다. 이제는 해당 필드를 geo_point 유형의 맵으로 사용할 수 있습니다.