質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Elasticsearch

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

Q&A

解決済

1回答

1714閲覧

ElasticSearchでfieldをまたいだ検索

kuniatsu

総合スコア141

Elasticsearch

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

0グッド

0クリップ

投稿2018/07/05 04:41

検索フォームに複数のキーワードが入った場合、複数のfieldを持つ1documentの中で指定するfieldにすべてのキーワードがあればHitさせたいです。
indexが下記の状態の場合、どのようなQueryを書けばよいでしょうか?

PUT testIndex/testType { "mappings" : { "testIndex" : { "properties" : { "title" : { "type" : "text" }, "subTitle" : { "type" : "text" }, "discription" : { "type" : "text" }, "tag" : { "type" : "text" }, "memo" : { "type" : "text" }, "memo2" : { "type" : "text" }, } } } } POST /testIndex/testType { "title" : "麺類のすべて", "subTitle" : "蕎麦はなぜ太らないのか?", "discription" : "パスタとピザを一緒に食べるならピザは手で食べるべきではない", "tag" : "うどん,ほうとう,きしめん", "memo" : "焼きそばを食べていますが今日は胃の調子が悪いようです。" "memo2" : "カレーライスも好き" }

『麺類 蕎麦 パスタ うどん 焼きそば』で検索すればヒット
『麺類 蕎麦 パスタ うどん カレーライス』で検索すればヒットしない。
という場合どのようになりますか?

SQLであれば

SELECT * FROM testIndex WHERE CONCAT(title,subTitle,discription,tag,memo) like '%麺類%' AND CONCAT(title,subTitle,discription,tag,memo) like '%蕎麦%' AND CONCAT(title,subTitle,discription,tag,memo) like '%パスタ%' AND CONCAT(title,subTitle,discription,tag,memo) like '%うどん%' AND CONCAT(title,subTitle,discription,tag,memo) like '%きそば%';

という形になると思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mather

2018/07/05 05:01

トライしてみた結果を書いてください。そもそも日本語を検索できるようになるまでに何種類か方法がありいくつか準備が必要なのですが、それが記載されてないので試したように見えません。
guest

回答1

0

ベストアンサー

携帯からなので粗かったら後で直します。

フィールドを跨いだ検索方法(AND)

json

1{ 2 "query": { 3 "multi_match": { 4 "query": "麺類 蕎麦 パスタ うどん 焼きそば", 5 "type": "cross_fields", 6 "operator": "and", 7 "fields": [ "title","subTitle","discription","tag","memo"] 8 } 9 } 10}

Elasticsearch は公式ドキュメントがかなりわかり安いので一読してみてください。

https://www.elastic.co/guide/en/elasticsearch/guide/current/_cross_fields_queries.html

クエリの分解の方法ですが、日本語の場合導入が簡単なのはkuromojiです。mappingの時に指定してください。

投稿2018/07/05 09:20

編集2018/07/05 09:22
gizennsyax

総合スコア31

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問