質問編集履歴

2 a

namenamenameko

namenamenameko score 234

2018/03/19 12:02  投稿

elasticsearch-railsで、カラムにないメソッドの値をindexにする
https://github.com/elastic/elasticsearch-rails/tree/master/elasticsearch-model
**やりたいこと:**
こちらのgemを使って、あるモデルをelasticsearchで検索できるようにしています。
あくまで例なのですが、`User`というモデルがあって
`id, first_name, last_name`というカラムを持っていたとします。
ここで、カラムにない
```
class User
...
def full_name
 first_name + last_name
end
...
end
```
という`full_name`もindexに加えて検索したいと思います。
**試したこと:**
```
module UserSearchable
 extend ActiveSupport::Concern
 included do
   include Searchable
   settings index: {
   ...
   }
   
   mappings do
     indexes :id, type: :integer
     indexes :first_name, type: text
     indexes :last_name, type: text
     indexes :full_name, type: text, as: 'full_name'
   end
   
   def as_indexed_json(options={})
     as_json(
       methods: [:country_ja]
       methods: [:full_name]
     )
   end
 end
end
```
https://stackoverflow.com/questions/13600086/index-the-results-of-a-method-in-elasticsearch-tire-activerecord
こちらなどを参考にして見ましたが、いまいちうまく行きません。
現象としては、kibanaで見たときに `full_name` がそもそもindexに含まれていないです。
elasticsearchが初心者なので色々と理解していない部分もあるのですが、
一般的にどのようにすれば良いのか教えて頂きたいです。
  • Ruby

    17809 questions

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

  • Ruby on Rails

    19548 questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • Elasticsearch

    230 questions

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

  • Ruby on Rails 5

    6004 questions

    Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

1 a

namenamenameko

namenamenameko score 234

2018/03/18 19:12  投稿

elasticsearch-railsで、カラムにないメソッドの値をindexにする
https://github.com/elastic/elasticsearch-rails/tree/master/elasticsearch-model
**やりたいこと:**
こちらのgemを使って、あるモデルをelasticsearchで検索できるようにしています。
あくまで例なのですが、`User`というモデルがあって
`id, first_name, last_name`というカラムを持っていたとします。
ここで、カラムにない
```
class User
...
def full_name
 first_name + last_name
end
...
end
```
という`full_name`もindexに加えて検索したいと思います。
**試したこと:**
```
module UserSearchable
 extend ActiveSupport::Concern
 included do
   include Searchable
   settings index: {
   ...
   }
   
   mappings do
     indexes :id, type: :integer
     indexed :first_name, type: text
     indexed :last_name, type: text
     indexed :full_name, type: text, as: 'full_name'
     indexes :first_name, type: text
     indexes :last_name, type: text
     indexes :full_name, type: text, as: 'full_name'
   end
   
   def as_indexed_json(options={})
     as_json(
       methods: [:country_ja]
     )
   end
 end
end
```
https://stackoverflow.com/questions/13600086/index-the-results-of-a-method-in-elasticsearch-tire-activerecord
こちらなどを参考にして見ましたが、いまいちうまく行きません。
現象としては、kibanaで見たときに `full_name` がそもそもindexに含まれていないです。
elasticsearchが初心者なので色々と理解していない部分もあるのですが、
一般的にどのようにすれば良いのか教えて頂きたいです。
  • Ruby

    17809 questions

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

  • Ruby on Rails

    19548 questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • Elasticsearch

    230 questions

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

  • Ruby on Rails 5

    6004 questions

    Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

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