2015-08-25 90 views
3

我在elasticsearch文檔中看到,您可以通過其ID獲取文檔。在elasticsearch rails中是否有任何等價物?我使用「as_indexed_json」提供API,這是一個比較昂貴的查詢,我想直接從API中的elasticsearch返回JSON。如何在elasticsearch rails中通過ID獲取文檔

回答

3

在這裏你可以做到這一點。 這是來自控制器的行動,對我來說效果很好。

def show 
    client = Elasticsearch::Client.new host:'127.0.0.1:9200', log: true 
    response = client.search index: 'example', body: {query: { match: {_id: params[:id]} } } 
    @example = response['hits']['hits'][0]['_source'] 
    respond_to do |format| 
    format.html # show.html.erb 
    format.js # show.js.erb 
    format.json { render json: @example } 
    end 
    @records = Example.search(@example['name']).per(12).results 
end 
4

您可以通過ID與Elasticsearch::Transport::Clientget方法獲取從給定索引的特定文檔。 get方法需要一個散列參數,其中包含要從中提取的索引的鍵和要提取的文檔的ID。

因此,所有一起,你需要三樣東西:

  1. 客戶對象
  2. 指數
  3. 文檔的ID(即模型ID)
client = YourModel.__elasticsearch__.client 
document = client.get({ index: YourModel.index_name, id: id_to_find }) 
的名稱