2015-03-03 23 views
5

Używam Spring Data ElasticSearch do wykonywania operacji CRUD. Domyślnie, gdy POJO opatrzone adnotacją @Document jest zapisywane w indeksie ElasticSearch, nazwy pól indeksu są takie same jak nazwy właściwości Java obiektu POJO. Jak skonfigurować nazwy pól indeksowych, aby były różne? Na przykład, w tym POJO dokumentu:Jak zdefiniować nazwy pól indeksowych ElasticSearch dla POJO przy użyciu danych sprężystych ElasticSearch

@Document(indexName = "areas", type = "area") 
public class Area { 

    @Id 
    private String id; 
    private String countyName; 
    private String postOfficeName; 
    private String stateName; 

jak mogę skonfigurować to tak, że pole indeksu w ElasticSearch dostaje szeregowane jako county_name zamiast countyName?

+1

Znalazłem pewnego rodzaju obejście, dodając Jackson's @JsonProperty ("nazwa_hrabstwa") w dokumencie @ NOTGATE, ale ma to tę wadę, że traci moc danych DSL findBy firmy Spring Data, ponieważ polegają one na camelCased nazwy właściwości Java. –

+0

Więcej szczegółów na temat używania '@ JspnProperty' omówiono w http://stackoverflow.com/questions/33537229/spring-elastic-search-custom-field-names – Javaru

Odpowiedz

0

Myślę, że musisz użyć właściwości adnotacji @Field, jestem tego prawie pewien. Zobacz here.

+0

Nie znajduję tam niczego związanego z nazwą pola – fizmax

1

Jako wiosennej-data-elasticsearch wykorzystuje moduł fasterxml przekonwertować POJOs do dokumentu json, można po prostu użyć,

@JsonProperty("country_name") 
private String countryName 

Aby osiągnąć inną nazwę pola w indeksie elasticsearch.