0
私はElasticSearchを使用しているレールアプリを構築しています。私がしようとしているのは、レールアプリがクライアントにJSONオブジェクトをElasticSearchの結果で送信させることです。ヘルプを使用できる場所は、Webクライアントに送信されるオブジェクトを適切に作成する方法です。ルビーで複雑なハッシュを作成するには?
今、私のレールコントローラで、私はハッシュを作成しています。ハッシュは正しい方法ですか?ハッシュを正しく作成していますか?
# Get the search results
@documents = current_user.documents.search(params[:q], current_user.id)
# Create the HASH
if @documents.count > 0
@documents.aggregations.by_authentication_id.buckets.each_with_index do |bucket, index|
# Create buckets
@json[ :buckets ][ index ] = {}
@json[ :buckets ][ index ][ :key ] = bucket["key"]
@json[ :buckets ][ index ][ :documents ] = {}
bucket["by_top_hit"].hits.hits.each_with_index do |d,i|
@json[ :buckets ][ index ][ :documents ][i] = {
title: d._source.document_title,
snippet: d.text
}
end
end
logger.debug @json
オブジェクトを正しく作成していますか?私はこれを最適に/最適にする方法を学びたいと思っています。
json = {}
json[:buckets] = @documents.aggregations.by_authentication_id.buckets.map do |bucket|
{
key: bucket["key"],
documents: bucket["by_top_hit"].hits.hits.map do |doc|
{ title: doc._source.document_title,
snippet: doc.text
}
end
}
end
これが生成されます:私は、あなたが探しているが、私はこのような構造は、JSONオブジェクトとしてあなたのためのよりよいかもしれないと思うものを
これは本当に素晴らしいです。ありがとうございました – AnnaSm