質問編集履歴

6

修正

2021/03/28 02:35

投稿

Hinoarashi.
Hinoarashi.

スコア76

test CHANGED
File without changes
test CHANGED
@@ -254,7 +254,7 @@
254
254
 
255
255
 
256
256
 
257
- `のように検索しても以下のように表示され、見た感じデータ検索をしていません。
257
+ のように検索しても以下のように表示され、見た感じデータ検索をしていません。
258
258
 
259
259
  ```ここに言語を入力
260
260
 

5

修正

2021/03/28 02:35

投稿

Hinoarashi.
Hinoarashi.

スコア76

test CHANGED
@@ -1 +1 @@
1
- Rails環境下ElasticSearchのコントローラ設定をしたい
1
+ Rails環境下ElasticSearchのSearchメソッドの設定をしたい
test CHANGED
@@ -194,13 +194,129 @@
194
194
 
195
195
  ```
196
196
 
197
- Viewの全文検索はすでに実装されているので、あとはControllerの設定すればElasticSeachを組み込めると思ます。
197
+ Viewの全文検索はすでに実装されているので、あとはSearchメソッド使える状態にして、コントローラから呼び出せばElasticSeachが使え状態になると思ってます。
198
-
199
-
200
-
198
+
199
+
200
+
201
- ### View・Controllerのコードと発生している問題
201
+ ### 発生している問題
202
+
202
-
203
+ [RailsとElasticsearchで検索機能をつくり色々試してみる - その1:サンプルアプリケーションの作成
204
+
205
+ ](https://qiita.com/yamashun/items/6ecaa6f161b4cf283db3)
206
+
207
+
208
+
209
+ 上記の記事を参考にElasticSearchのインデックス内を検索するメソッドを以下のように実装しています。
210
+
211
+ ```ここに言語を入力
212
+
213
+ def es_search(query)
214
+
215
+ __elasticsearch__.search({
216
+
217
+ query: {
218
+
219
+ multi_match: {
220
+
221
+ fields: %w(id title contents industry ...),
222
+
223
+ type: 'cross_fields',
224
+
225
+ query: query,
226
+
227
+ operator: 'and'
228
+
229
+ }
230
+
231
+ }
232
+
233
+ })
234
+
235
+ end
236
+
237
+ end
238
+
239
+ end
240
+
241
+ ```
242
+
243
+
244
+
245
+ しかし、rails cで
246
+
247
+
248
+
249
+ ```ここに言語を入力
250
+
251
+ Project.es_search('ゲーム')
252
+
253
+ ```
254
+
255
+
256
+
257
+ `のように検索しても以下のように表示され、見た感じデータ検索をしていません。
258
+
259
+ ```ここに言語を入力
260
+
261
+ #<Elasticsearch::Model::Response::Response:0x007fc1a85621a8
262
+
263
+ @klass=[PROXY] Project (call 'Project.connection' to establish a connection),
264
+
265
+ @search=
266
+
267
+ #<Elasticsearch::Model::Searching::SearchRequest:0x007fc1a8562248
268
+
269
+ @definition=
270
+
271
+ {:index=>"es_project_development",
272
+
273
+ :type=>nil,
274
+
275
+ :body=>
276
+
277
+ {:query=>
278
+
279
+ {:multi_match=>
280
+
281
+ {:fields=>
282
+
283
+ ["id",
284
+
285
+ "title",
286
+
287
+ "contents",
288
+
289
+ "industry",
290
+
291
+ "required",
292
+
293
+ ...
294
+
295
+ "comment"],
296
+
297
+ :type=>"cross_fields",
298
+
299
+ :query=>"ゲーム",
300
+
301
+ :operator=>"and"}}}},
302
+
303
+ @klass=[PROXY] Project (call 'Project.connection' to establish a connection),
304
+
305
+ @options={}>>
306
+
307
+ ```
308
+
309
+
310
+
311
+ 公式サイトを見ても実装自体は何となくあってる気がします。
312
+
313
+ [ElasticSearch公式](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html)
314
+
315
+
316
+
317
+ かなりドツボにはまっており、非常に困っています。。
318
+
203
- まずViewとControllerは以下のように全文検索が実装されています。
319
+ ちなみにViewとControllerは以下のように実装されています。
204
320
 
205
321
 
206
322
 
@@ -268,45 +384,7 @@
268
384
 
269
385
  ```
270
386
 
271
- 参考にしている記事は
387
+
272
-
273
- ```ここに言語を入力
274
-
275
- def index
276
-
277
- @mangas = if search_word.present?
278
-
279
- Manga.es_search(search_word).records
280
-
281
- else
282
-
283
- Manga.all
284
-
285
- end
286
-
287
- end
288
-
289
-
290
-
291
- private
292
-
293
-
294
-
295
- def search_word
296
-
297
- @search_word ||= params[:search_word]
298
-
299
- end
300
-
301
- end
302
-
303
- ```
304
-
305
- のように実装されてますが、現状のコードに適用させる方法を色々試しましたが、できませんでした。
306
-
307
- また、イチから全文検索を実装しようにも現状のテーブルが複雑すぎて、記事のように実装できないのが現状です。
308
-
309
- かなり行き詰まっています、、
310
388
 
311
389
 
312
390
 

4

更新

2021/03/28 02:33

投稿

Hinoarashi.
Hinoarashi.

スコア76

test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  MySQL
14
14
 
15
- Elasticsearch:7.10.2-SNAPSHOT
15
+ Elasticsearch 7.10.2-SNAPSHOT
16
16
 
17
17
  kuromoji
18
18
 
@@ -20,10 +20,16 @@
20
20
 
21
21
  <gem>
22
22
 
23
+ elasticsearch (7.4.0)
24
+
25
+ elasticsearch-api (7.4.0)
26
+
23
27
  elasticsearch-model (7.1.0 80822d6)
24
28
 
25
29
  elasticsearch-rails (7.1.0 80822d6)
26
30
 
31
+ elasticsearch-transport (7.4.0)
32
+
27
33
 
28
34
 
29
35
  ※ローカル環境です

3

更新

2021/03/26 14:37

投稿

Hinoarashi.
Hinoarashi.

スコア76

test CHANGED
File without changes
test CHANGED
@@ -2,9 +2,13 @@
2
2
 
3
3
 
4
4
 
5
+ MacOS
6
+
7
+ RailsServer
8
+
5
- Ruby:2.4.1
9
+ Ruby 2.4.1
6
-
10
+
7
- Ruby on Rails:5.1.7
11
+ Ruby on Rails 5.1.7
8
12
 
9
13
  MySQL
10
14
 
@@ -22,6 +26,10 @@
22
26
 
23
27
 
24
28
 
29
+ ※ローカル環境です
30
+
31
+
32
+
25
33
  ### 実現したいこと・前置き
26
34
 
27
35
 

2

includeの説明

2021/03/26 14:35

投稿

Hinoarashi.
Hinoarashi.

スコア76

test CHANGED
File without changes
test CHANGED
@@ -64,13 +64,17 @@
64
64
 
65
65
  ElasticSearchのindexやmappingの設定は以下のようにしました。
66
66
 
67
- なお、models/project.rb内
67
+ なお、models/project.rb内
68
-
68
+
69
- ```
69
+ ```
70
+
70
-
71
+ class Project < ApplicationRecord
72
+
71
- include ProjectSearchable
73
+ include ProjectSearchable
74
+
72
-
75
+ ...
76
+
73
- ```を記述してます。
77
+ ```のようにしております。
74
78
 
75
79
  ```
76
80
 

1

includeの説明

2021/03/25 04:45

投稿

Hinoarashi.
Hinoarashi.

スコア76

test CHANGED
File without changes
test CHANGED
@@ -64,6 +64,14 @@
64
64
 
65
65
  ElasticSearchのindexやmappingの設定は以下のようにしました。
66
66
 
67
+ なお、models/project.rb内に
68
+
69
+ ```
70
+
71
+ include ProjectSearchable
72
+
73
+ ```を記述しています。
74
+
67
75
  ```
68
76
 
69
77
  /models/concerns/project_searchable.rb