2015-11-05 86 views
4

我是Elastic Search的新手,我試圖使用Spring-data-elasticsearch實現它。Spring彈性搜索自定義字段名稱

我在我們的彈性搜索文檔中具有諸如「Transportation」,「Telephone_Number」等名稱的字段。

當我試圖映射我的@Domain對象字段時,我沒有收到任何數據,因爲我無法成功映射這些字段。

試圖使用@Field,很失望,因爲它沒有'name'屬性來映射自定義字段名稱。

嘗試了GETTER函數的不同變體,其中沒有一個似乎映射到這些字段。

我開始想知道是否有什麼我在這裏失蹤。 域對象字段應該如何映射到一個名爲「Transportation」的字段?

任何幫助讚賞

回答

7

您可以使用自定義名稱。 Spring Data ES使用Jackson。所以,你可以使用@JsonProperty("your_custom_name")在ES映射

例如啓用自定義名稱:

@Document(indexName = "your_index_name", type = "your_type_name") 
public class YourEntity { 
    .... 
    @JsonProperty("my_transportation") 
    @Field(type = FieldType.String, searchAnalyzer = "standard", indexAnalyzer = "standard", store = true) // just for example 
    private String myTransportation; 
    .... 
} 

注:我很抱歉,無論如何,我的英語不好..:d

+0

明白了,作品如預期。 – Vsoma

+0

使用@JsonProperty在保存中運行良好,但無法在查詢中工作。 [無法爲具有下劃線的實體字段生成自定義查詢](https://groups.google.com/forum/#!topic/spring-data-elasticsearch-devs/L0Ysohm8iqc) –

+1

只要「@ JsonProperty」值與POJO中的字段名稱不同,「Repository」查詢不起作用...:/ –