ElasticSearch自动生成geo_point索引

pom.xml

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
		</dependency>

application.yml

server:
  port: 8082
spring:
  data:
    elasticsearch:
      cluster-nodes: 127.0.0.1:9300
      cluster-name: Test Cluster

注意:
1、缺少9300和cluster-name配置报错

 'elasticsearchTemplate' that could not be found.

2、127.0.0.1:9300必须本地跑,否则就ngrok/nginx

NoNodeAvailableException[None of the configured nodes are available

不是client.transport.sniff=true的问题,换TransportClient一样错误,也不是版本冲突问题

代码

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;

@SpringBootApplication
@EnableElasticsearchRepositories
public class EsPluginApplication {

	public static void main(String[] args) {
		SpringApplication.run(EsPluginApplication.class, args);
	}

}
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.GeoPointField;
import org.springframework.data.elasticsearch.core.geo.GeoPoint;

@Document(indexName = "person", type = "person")
public class Person {
	@Id private Long id;
	private Date dateTime;//默认转long类型
	private String lastName;
	private String firstName;

	private GeoPoint geoPoint;

	@GeoPointField private MyGeoPoint myGeoPoint;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getLastName() {
		return lastName;
	}

	public void setLastName(String lastName) {
		this.lastName = lastName;
	}

	public String getFirstName() {
		return firstName;
	}

	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}

	public GeoPoint getGeoPoint() {
		return geoPoint;
	}

	public void setGeoPoint(GeoPoint geoPoint) {
		this.geoPoint = geoPoint;
	}

	public MyGeoPoint getMyGeoPoint() {
		return myGeoPoint;
	}

	public void setMyGeoPoint(MyGeoPoint myGeoPoint) {
		this.myGeoPoint = myGeoPoint;
	}

	@Override
	public String toString() {
		return "Person{" +
				"id=" + id +
				", lastName='" + lastName + '\'' +
				", firstName='" + firstName + '\'' +
				", geoPoint=" + geoPoint +
				", myGeoPoint=" + myGeoPoint +
				'}';
	}

	public static class MyGeoPoint {
		private double lat;
		private double lon;

		public double getLat() {
			return lat;
		}

		public void setLat(double lat) {
			this.lat = lat;
		}

		public double getLon() {
			return lon;
		}

		public void setLon(double lon) {
			this.lon = lon;
		}

		@Override
		public String toString() {
			return "MyGeoPoint{" + "lat=" + lat + ", lon=" + lon + '}';
		}
	}
}
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

public interface PersonRepository extends ElasticsearchRepository<Person, Long> {}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/repo")
public class ElasticsearchRepositoryController {

	@Autowired
	private PersonRepository personRepository;

	@GetMapping("/init")
	public Long initPerson() {
		final Person person = new Person();
		person.setId(42L);
		person.setFirstName("John");
		person.setLastName("Doe");

		GeoPoint geoPoint = new GeoPoint(12.34, 56.78);
		person.setGeoPoint(geoPoint);

		Person.MyGeoPoint myGeoPoint = new Person.MyGeoPoint();
		myGeoPoint.setLat(43.21);
		myGeoPoint.setLon(87.65);
		person.setMyGeoPoint(myGeoPoint);

		return personRepository.save(person).getId();

	}
}

参考:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值