2016-09-21 54 views
0

我第一次使用elasticsearch grails插件,當我設置配置bulkIndexOnStartup = true時,它正確地索引了幾個域類,但對於其他幾個它,似乎只索引了一個實例,儘管我在數據庫中看到了99個不同的實例。grails elasticsearch只索引了一個例子

當我通過調用

elasticSearchService.index(anInstance) 

它只是刪除舊的條目,並添加一個新的,所以在最後仍有在elasticsearch只有一個實例試圖具體指標的實例。有沒有「indexAllDistinct」設置?它如何決定添加一個新條目或替換現有條目?

我還注意到,在正確索引的實例上,_id字段都有數字值,但在索引不正確的實例上,_id字段爲「null」。

編輯:我發現索引不正確的類有「id」映射名稱設置爲不同的字段。我如何告訴elasticsearch「id」對這些類有不同的名稱?

回答

0

對於將缺省「id」映射到另一個名稱的grails域類,我必須爲elasticsearch添加一個臨時「id」。例如:

class LogEntry { 
    Integer logId // replaces default id 
    ... 

    static mapping = { 
    id name: 'logId', column: 'LOG_ID' 
    ... 
    } 

    static transients = ['id'] // for elasticsearch 
    def getId(){ 
    return logId 
    } 
}