質問編集履歴

1 カテゴリー追加

abab7200

abab7200 score 62

2018/01/18 08:53  投稿

Elasticsearchでmore_like_thisを利用しようとするとエラーになる
RailsのアプリケーションへElasticsearchのMore Like This Queryを利用して関連記事を表示するロジックを実現しようとしています。
値を取得しようとするとlikeの設定が足りないという、エラーが発生するのですが対応方法が不明なためどなたかご教授いただければ存じます。
※Elasticsearchはバージョン6.1.1になります。
エラー内容
```ruby
$ article = Article.find(4)
$ article.more_like_this.results.map(&:title)
Elasticsearch::Transport::Transport::Errors::BadRequest: [400] {"error":{"root_cause":[{"type":"parsing_exception","reason":"more_like_this requires 'like' to be specified","line":1,"col":92}],"type":"parsing_exception","reason":"more_like_this requires 'like' to be specified","line":1,"col":92},"status":400}
```
ArticleModel
```ruby
class Article < ActiveRecord::Base
include Elasticsearch::Model
include Elasticsearch::Model::Callbacks
settings do
mappings dynamic: 'false' do
indexes :title, type: 'text', analyzer: 'kuromoji'
indexes :content, type: 'text', analyzer: 'kuromoji'
end
end
class << self
def search(query)
__elasticsearch__.search({
query: {
multi_match: {
fields: %w(title content),
fuzziness: 'AUTO',
query: query
}
}
})
end
end
def more_like_this
self.class.__elasticsearch__.search({
query: {
more_like_this: {
fields: %w(title content),
min_doc_freq: 0,
min_term_freq: 0
}
}
})
end
end
```
  • Elasticsearch

    108questions

    Elasticsearchは、クラウド向けに構築された、RESTful な API を提供する分散型のサーチエンジンアプリケーションです。

  • Ruby on Rails 4

    2455questions

    Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

  • Ruby

    7945questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • RubyGems

    339questions

    RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る