4.Elasticsearch 3分でやるbool Query
頻繁に使うクエリ、bool クエリ さくっと
Bool Query
他のクエリのブール値の組み合わせに一致するドキュメントと一致するクエリ。
データが一つしか多分はいっていないと思うので追加
curl -XPUT http://localhost:9200/tweets/tweet_param/2 -d '
{
"tweet_id" : "791531376998617000",
"user_name" : "@Silky_info",
"tweet" : "スターバックスでスターバックスカードに期間中累計5000円以上チャージする毎に一杯無料のチケットがもらえる… #silkycafe https://t.co/yPzSDL93Mq",
"tweet_create_at": "2016-10-27 15:46:00",
"tweet_create_at": "2016-10-27 16:35:23"
}'
curl -XPUT http://localhost:9200/tweets/tweet_param/3 -d '
{
"tweet_id" : "791555781657100000",
"user_name" : "@copiperin",
"tweet" : "【消費税8%で合計金額777円になるスターバックス商品の組み合わせ】 ドリップコーヒー トールサイズ 320円(税抜き) ミックスサンドイッチ 400円 (税抜き) 店員さんと仲良くなりたい人におすすめ!笑 https://t.co/7TKXyD5uEl",
"tweet_create_at": "2016-10-27 17:22:59",
"tweet_create_at": "2016-10-27 17:35:52"
}'
データを投入したら確認しましょう。
curl -X GET http://localhost:9200/tweets/tweet_param/2?pretty
curl -X GET http://localhost:9200/tweets/tweet_param/3?pretty
実際に叩いてみた〜bool query
curl -XGET 'http://localhost:9200/tweets/tweet_param/_search?pretty' -d '
{
"query": {
"bool": {
"should": [
{
"match": {
"tweet": "チケット"
}
},
{
"match": {
"tweet": "トールサイズ"
}
}
]
}
}
}'
結果
{
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 2,
"max_score" : 0.27600175,
"hits" : [
{
"_index" : "tweets",
"_type" : "tweet_param",
"_id" : "3",
"_score" : 0.27600175,
"_source" : {
"tweet_id" : "791555781657100000",
"user_name" : "@copiperin",
"tweet" : "【消費税8%で合計金額777円になるスターバックス商品の組み合わせ】 ドリップコーヒー トールサイズ 320円(税抜き) ミックスサンドイッチ 400円 (税抜き) 店員さんと仲良くなりたい人におすすめ!笑 https://t.co/7TKXyD5uEl",
"tweet_create_at" : "2016-10-27 17:22:59",
"tweet_create_at" : "2016-10-27 17:35:52"
}
},
{
"_index" : "tweets",
"_type" : "tweet_param",
"_id" : "2",
"_score" : 0.26184395,
"_source" : {
"tweet_id" : "791531376998617000",
"user_name" : "@Silky_info",
"tweet" : "スターバックスでスターバックスカードに期間中累計5000円以上チャージする毎に一杯無料のチケットがもらえる… #silkycafe https://t.co/yPzSDL93Mq",
"tweet_create_at" : "2016-10-27 15:46:00",
"tweet_create_at" : "2016-10-27 16:35:23"
}
}
]
}
}
新しくでできた箇所
boolとshould
bool:複数のクエリを組み合わせる(AND、OR、NOTで結合)
Boolクエリは4種類あります。
クエリ 説明
must:ANDとして使います。小クエリは総合スコアに影響を与えます
filter:mustと同じくANDです。ただし、スコアは無視されます(総合スコアに影響を与えません)。
should:ORとして使えます。 minimum_should_matchパラメータで最低マッチする条項の数が指定できます1。
must_not:NOTです。
まとめると...
になります。
複数条件のクエリを投げることがよくあるかと思います。
条件を足してより複雑なクエリが書けるようになります。
この記事が気に入ったらサポートをしてみませんか?