さて、前回に引き続き Elasticsearch の検証ですが、今回は Aggregattion を使って分類や集計を行っていきます。
★関連記事
Elasticsearch 6 を使ったデータ検証 その1(Dockerでコンテナの作成と確認)
Elasticsearch 6 を使ったデータ検証 その2(マッピングの登録をしてみる)
Elasticsearch 6 を使ったデータ検証 その3(bulkでデータを投入してみる)
Elasticsearch 6 を使ったデータ検証 その4(チュートリアル記事とデータの検索での比較)
Elasticsearch 6 を使ったデータ検証 その5(クエリでの検索)
Elasticsearch 6 を使ったデータ検証 その7(Analyzerについて)
データセットは前回と同じものを使います。
今回はRDMSの「Group by」に似た「Aggregation」を使ってドキュメントを特定のグループに分類して、さらにそのグループごとの件数、最大値、平均値といった統計量の値を検索してみます。
Aggregationについて
Aggregationは、統計情報を出したり、分類・集計を行うためのいくつかのカテゴリに分けることができます。
カテゴリとしては「Metrics」、「Buckets」、「Pipeline」、「Matrix」の4つです。
データセットに対しては以下の2つでデータを抽出できます。
- query句で検索条件を指定してデータを絞り込んで抽出
- Bucketsを使ってドキュメントをグループ化してグループ化されたデータから抽出
平均、最大、最小などの統計値を求める
Aggregationでは「aggs」句を利用して分類を行います。
尚、以下のAggregation全般でsize句に0を指定するとAggregationで計算した統計量の数値だけが返されます。
平均を抽出
avg句を使うとグループ化したものに対して平均を求めることができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
$ curl -H "Content-Type: application/json" -XGET 'http://localhost:9200/restaurant/type/_search?pretty=true' -d ' > { > "size": 0, > "query": { > "match": { > "category": "317" > } > }, > "aggs": { > "avg_access_count": { > "avg": { > "field": "access_count" > } > } > } > } > ' { "took" : 213, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 9519, "max_score" : 0.0, "hits" : [ ] }, "aggregations" : { "avg_access_count" : { "value" : 1193.0300451728124 } } } |
上記ではカテゴリー317のアクセス数の平均を求めています。(今回はkeywordにmatch句を使っています。)
最大値、最小値を抽出
max, minを使うと最大値と最小値の集計を行えます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
$ curl -H "Content-Type: application/json" -XGET 'http://localhost:9200/restaurant/type/_search?pretty=true' -d ' > { > "size": 0, > "query": { > "term": { > "category": "317" > } > }, > "aggs": { > "min_access_count": { > "min": { > "field": "access_count" > } > }, > "max_access_count": { > "max": { > "field": "access_count" > } > } > } > } > ' { "took" : 17, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 9519, "max_score" : 0.0, "hits" : [ ] }, "aggregations" : { "min_access_count" : { "value" : 2.0 }, "max_access_count" : { "value" : 112503.0 } } } |
同じくcategoryのアクセス数の最大値と最小値を抽出しています。
今回は「term」を利用しています。(こちらが適切)
概算値を抽出
「cardinality」はフィールドの数の概算値を抽出します。
非常に早いハッシュのアルゴリズム(HyperLogLog++)を使い全件を捜査せずに値の概算を出します。
(概算ですので金額などの数字には不向きです。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
$ curl -H "Content-Type: application/json" -XGET 'http://localhost:9200/restaurant/type/_search?pretty=true' -d ' > { > "size": 0, > "aggs" : { > "category_count" : { > "cardinality" : { > "field" : "category" > } > } > } > } > ' { "took" : 61, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 214236, "max_score" : 0.0, "hits" : [ ] }, "aggregations" : { "category_count" : { "value" : 245 } } } |
集計値をまとめて抽出
statsを使うと1回のクエリで、複数の統計値をまとめて抽出できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
$ curl -H "Content-Type: application/json" -XGET 'http://localhost:9200/restaurant/type/_search?pretty=true' -d ' > { > "size": 0, > "aggs" : { > "access_count_stats": { > "stats": { > "field": "access_count" > } > } > } > } > ' { "took" : 11, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 214236, "max_score" : 0.0, "hits" : [ ] }, "aggregations" : { "access_count_stats" : { "count" : 214236, "min" : 1.0, "max" : 282678.0, "avg" : 1319.0409501671054, "sum" : 2.82586057E8 } } } |
最小、最大、平均、合計を抽出しました。
フィールドを分類する
termsを使ってグルーピング化したフィールド定義
terms句を使うとフィールドをグルーピング化できます。(「group by」に似ている)
以下ではグループピング化したフィールドの上位3件抽出しています。
結果としてグループ化されたフィールドの値の「key」とドキュメント数の「doc_count」が結果に表示されています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
$ curl -H "Content-Type: application/json" -XGET 'http://localhost:9200/restaurant/type/_search?pretty=true' -d ' > { > "size": 0, > "aggs": { > "category_buckets": { > "terms": { > "field": "category", > "size": 3 > } > } > } > } > ' { "took" : 14, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 214236, "max_score" : 0.0, "hits" : [ ] }, "aggregations" : { "category_buckets" : { "doc_count_error_upper_bound" : 4496, "sum_other_doc_count" : 174386, "buckets" : [ { "key" : "505", "doc_count" : 20547 }, { "key" : "145", "doc_count" : 9784 }, { "key" : "317", "doc_count" : 9519 } ] } } } |
値の範囲を指定しての抽出
ranges句を使うと数値型の値の範囲を使って分類を行えます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
$ curl -H "Content-Type: application/json" -XGET 'http://localhost:9200/restaurant/type/_search?pretty=true' -d ' > { > "size": 0, > "aggs": { > "access_count_buckets": { > "range": { > "field": "access_count", > "ranges": [ > { > "to": 1000 > }, > { > "from": 1000, > "to": 2000 > }, > { > "from": 2000, > "to": 3000 > }, > { > "from": 3000 > } > ] > } > } > } > } > ' { "took" : 31, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 214236, "max_score" : 0.0, "hits" : [ ] }, "aggregations" : { "access_count_buckets" : { "buckets" : [ { "key" : "*-1000.0", "to" : 1000.0, "doc_count" : 144370 }, { "key" : "1000.0-2000.0", "from" : 1000.0, "to" : 2000.0, "doc_count" : 36632 }, { "key" : "2000.0-3000.0", "from" : 2000.0, "to" : 3000.0, "doc_count" : 13389 }, { "key" : "3000.0-*", "from" : 3000.0, "doc_count" : 19845 } ] } } } |
日付の範囲での分類
「date_range」句を使うと日付の範囲での分類が行えます。
ログ分析など非常に大きな効果が発揮できそうな機能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
$ curl -H "Content-Type: application/json" -XGET 'http://localhost:9200/rating/type/_search?pretty=true' -d ' > { > "size": 0, > "aggs": { > "created_on_buckets": { > "date_range": { > "field": "created_on", > "ranges": [ > { > "from": "now-9y", > "to": "now-8y" > }, > { > "from": "now-8y", > "to": "now" > } > ] > } > } > } > } > ' { "took" : 111, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 205832, "max_score" : 0.0, "hits" : [ ] }, "aggregations" : { "created_on_buckets" : { "buckets" : [ { "key" : "2009-08-17T03:47:23.804Z-2010-08-17T03:47:23.804Z", "from" : 1.250480843804E12, "from_as_string" : "2009-08-17T03:47:23.804Z", "to" : 1.282016843804E12, "to_as_string" : "2010-08-17T03:47:23.804Z", "doc_count" : 29890 }, { "key" : "2010-08-17T03:47:23.804Z-2018-08-17T03:47:23.804Z", "from" : 1.282016843804E12, "from_as_string" : "2010-08-17T03:47:23.804Z", "to" : 1.534477643804E12, "to_as_string" : "2018-08-17T03:47:23.804Z", "doc_count" : 9515 } ] } } } |
段階の値での抽出
histgram区を使うと自動的に値を段階的に設定して、分類を行うことができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 |
$ curl -H "Content-Type: application/json" -XGET 'http://localhost:9200/restaurant/type/_search?pretty=true' -d ' > { > "size": 0, > "aggs": { > "access_count_histogram_buckets": { > "histogram": { > "field": "access_count", > "interval": 10000 > } > } > } > } > ' { "took" : 10, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 214236, "max_score" : 0.0, "hits" : [ ] }, "aggregations" : { "access_count_histogram_buckets" : { "buckets" : [ { "key" : 0.0, "doc_count" : 211390 }, { "key" : 10000.0, "doc_count" : 2028 }, { "key" : 20000.0, "doc_count" : 452 }, { "key" : 30000.0, "doc_count" : 154 }, { "key" : 40000.0, "doc_count" : 91 }, { "key" : 50000.0, "doc_count" : 34 }, { "key" : 60000.0, "doc_count" : 24 }, { "key" : 70000.0, "doc_count" : 18 }, { "key" : 80000.0, "doc_count" : 7 }, { "key" : 90000.0, "doc_count" : 10 }, { "key" : 100000.0, "doc_count" : 6 }, { "key" : 110000.0, "doc_count" : 7 }, { "key" : 120000.0, "doc_count" : 3 }, { "key" : 130000.0, "doc_count" : 2 }, { "key" : 140000.0, "doc_count" : 2 }, { "key" : 150000.0, "doc_count" : 1 }, { "key" : 160000.0, "doc_count" : 1 }, { "key" : 170000.0, "doc_count" : 1 }, { "key" : 180000.0, "doc_count" : 0 }, { "key" : 190000.0, "doc_count" : 1 }, { "key" : 200000.0, "doc_count" : 0 }, { "key" : 210000.0, "doc_count" : 0 }, { "key" : 220000.0, "doc_count" : 0 }, { "key" : 230000.0, "doc_count" : 1 }, { "key" : 240000.0, "doc_count" : 0 }, { "key" : 250000.0, "doc_count" : 1 }, { "key" : 260000.0, "doc_count" : 1 }, { "key" : 270000.0, "doc_count" : 0 }, { "key" : 280000.0, "doc_count" : 1 } ] } } } |
histgramはrangeと同様に数値型のフィールドに対して値の範囲でBucketsを分類します。
範囲を指定するのではなく、増分値(interval)を指定します。
複数の抽出条件の組み合わせ
上記の複数の抽出条件を合わせた集計を行えます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 |
$ curl -H "Content-Type: application/json" -XGET 'http://localhost:9200/restaurant/type/_search?pretty=true' -d ' > { > "size": 0, > "aggs": { > "category_buckets": { > "terms": { "field": "category" }, > "aggs": { > "access_count_bucckets": { > "range": { > "field": "access_count", > "ranges": [ > { "from": 0, "to": 5000 }, > { "from": 5000, "to": 10000 }, > { "from": 10000, "to": 100000 }, > { "from": 100000 } > ] > } > } > } > } > } > } > ' { "took" : 65, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 214236, "max_score" : 0.0, "hits" : [ ] }, "aggregations" : { "category_buckets" : { "doc_count_error_upper_bound" : 2342, "sum_other_doc_count" : 121076, "buckets" : [ { "key" : "505", "doc_count" : 20547, "access_count_bucckets" : { "buckets" : [ { "key" : "0.0-5000.0", "from" : 0.0, "to" : 5000.0, "doc_count" : 20282 }, { "key" : "5000.0-10000.0", "from" : 5000.0, "to" : 10000.0, "doc_count" : 184 }, { "key" : "10000.0-100000.0", "from" : 10000.0, "to" : 100000.0, "doc_count" : 81 }, { "key" : "100000.0-*", "from" : 100000.0, "doc_count" : 0 } ] } }, { "key" : "145", "doc_count" : 9784, "access_count_bucckets" : { "buckets" : [ { "key" : "0.0-5000.0", "from" : 0.0, "to" : 5000.0, "doc_count" : 9581 }, { "key" : "5000.0-10000.0", "from" : 5000.0, "to" : 10000.0, "doc_count" : 152 }, { "key" : "10000.0-100000.0", "from" : 10000.0, "to" : 100000.0, "doc_count" : 51 }, { "key" : "100000.0-*", "from" : 100000.0, "doc_count" : 0 } ] } }, { "key" : "317", "doc_count" : 9519, "access_count_bucckets" : { "buckets" : [ { "key" : "0.0-5000.0", "from" : 0.0, "to" : 5000.0, "doc_count" : 9103 }, { "key" : "5000.0-10000.0", "from" : 5000.0, "to" : 10000.0, "doc_count" : 275 }, { "key" : "10000.0-100000.0", "from" : 10000.0, "to" : 100000.0, "doc_count" : 140 }, { "key" : "100000.0-*", "from" : 100000.0, "doc_count" : 1 } ] } }, { "key" : "601", "doc_count" : 8940, "access_count_bucckets" : { "buckets" : [ { "key" : "0.0-5000.0", "from" : 0.0, "to" : 5000.0, "doc_count" : 8510 }, { "key" : "5000.0-10000.0", "from" : 5000.0, "to" : 10000.0, "doc_count" : 330 }, { "key" : "10000.0-100000.0", "from" : 10000.0, "to" : 100000.0, "doc_count" : 99 }, { "key" : "100000.0-*", "from" : 100000.0, "doc_count" : 1 } ] } }, { "key" : "178", "doc_count" : 8876, "access_count_bucckets" : { "buckets" : [ { "key" : "0.0-5000.0", "from" : 0.0, "to" : 5000.0, "doc_count" : 8693 }, { "key" : "5000.0-10000.0", "from" : 5000.0, "to" : 10000.0, "doc_count" : 139 }, { "key" : "10000.0-100000.0", "from" : 10000.0, "to" : 100000.0, "doc_count" : 44 }, { "key" : "100000.0-*", "from" : 100000.0, "doc_count" : 0 } ] } }, { "key" : "202", "doc_count" : 8077, "access_count_bucckets" : { "buckets" : [ { "key" : "0.0-5000.0", "from" : 0.0, "to" : 5000.0, "doc_count" : 7625 }, { "key" : "5000.0-10000.0", "from" : 5000.0, "to" : 10000.0, "doc_count" : 320 }, { "key" : "10000.0-100000.0", "from" : 10000.0, "to" : 100000.0, "doc_count" : 129 }, { "key" : "100000.0-*", "from" : 100000.0, "doc_count" : 3 } ] } }, { "key" : "332", "doc_count" : 7709, "access_count_bucckets" : { "buckets" : [ { "key" : "0.0-5000.0", "from" : 0.0, "to" : 5000.0, "doc_count" : 7513 }, { "key" : "5000.0-10000.0", "from" : 5000.0, "to" : 10000.0, "doc_count" : 140 }, { "key" : "10000.0-100000.0", "from" : 10000.0, "to" : 100000.0, "doc_count" : 54 }, { "key" : "100000.0-*", "from" : 100000.0, "doc_count" : 2 } ] } }, { "key" : "402", "doc_count" : 7553, "access_count_bucckets" : { "buckets" : [ { "key" : "0.0-5000.0", "from" : 0.0, "to" : 5000.0, "doc_count" : 7297 }, { "key" : "5000.0-10000.0", "from" : 5000.0, "to" : 10000.0, "doc_count" : 183 }, { "key" : "10000.0-100000.0", "from" : 10000.0, "to" : 100000.0, "doc_count" : 73 }, { "key" : "100000.0-*", "from" : 100000.0, "doc_count" : 0 } ] } }, { "key" : "127", "doc_count" : 6268, "access_count_bucckets" : { "buckets" : [ { "key" : "0.0-5000.0", "from" : 0.0, "to" : 5000.0, "doc_count" : 6140 }, { "key" : "5000.0-10000.0", "from" : 5000.0, "to" : 10000.0, "doc_count" : 93 }, { "key" : "10000.0-100000.0", "from" : 10000.0, "to" : 100000.0, "doc_count" : 35 }, { "key" : "100000.0-*", "from" : 100000.0, "doc_count" : 0 } ] } }, { "key" : "110", "doc_count" : 5887, "access_count_bucckets" : { "buckets" : [ { "key" : "0.0-5000.0", "from" : 0.0, "to" : 5000.0, "doc_count" : 5699 }, { "key" : "5000.0-10000.0", "from" : 5000.0, "to" : 10000.0, "doc_count" : 140 }, { "key" : "10000.0-100000.0", "from" : 10000.0, "to" : 100000.0, "doc_count" : 48 }, { "key" : "100000.0-*", "from" : 100000.0, "doc_count" : 0 } ] } } ] } } } |
ネスト化され複雑にはなっていきますが、様々な条件での分類・集計を行うことができます。
特殊な集計
特異点を持つ分類の抽出
「significant terms」区では今までのように最大・最小などの集計ではなく、分類した時に特異点を持つ特徴を見つけ出すことができます。
「事故率の多い種別」や「予想しにくい販売の傾向」など特異点から様々な角度でのデータ分析を行うことができるaggregationタイプです。
スコアが大きいほど平均から離れた特異点のデータとなります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 |
$ curl -H "Content-Type: application/json" -XGET 'http://localhost:9200/restaurant/type/_search?pretty=true' -d ' > { > "size": 0, > "aggs": { > "category_buckets": { > "terms": { > "field": "category" > }, > "aggs": { > "significant_closed_types": { > "significant_terms": { > "field": "closed" > } > } > } > } > } > } > ' { "took" : 31, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 214236, "max_score" : 0.0, "hits" : [ ] }, "aggregations" : { "category_buckets" : { "doc_count_error_upper_bound" : 2342, "sum_other_doc_count" : 121076, "buckets" : [ { "key" : "505", "doc_count" : 20547, "significant_closed_types" : { "doc_count" : 20547, "bg_count" : 214236, "buckets" : [ { "key" : 0, "key_as_string" : "false", "doc_count" : 20359, "score" : 0.016943081321383023, "bg_count" : 208707 } ] } }, { "key" : "145", "doc_count" : 9784, "significant_closed_types" : { "doc_count" : 9784, "bg_count" : 214236, "buckets" : [ { "key" : 0, "key_as_string" : "false", "doc_count" : 9637, "score" : 0.010902821097875501, "bg_count" : 208707 } ] } }, { "key" : "317", "doc_count" : 9519, "significant_closed_types" : { "doc_count" : 9519, "bg_count" : 214236, "buckets" : [ { "key" : 1, "key_as_string" : "true", "doc_count" : 471, "score" : 0.04538479650028082, "bg_count" : 5529 } ] } }, { "key" : "601", "doc_count" : 8940, "significant_closed_types" : { "doc_count" : 8940, "bg_count" : 214236, "buckets" : [ { "key" : 0, "key_as_string" : "false", "doc_count" : 8725, "score" : 0.0017619456703763694, "bg_count" : 208707 } ] } }, { "key" : "178", "doc_count" : 8876, "significant_closed_types" : { "doc_count" : 8876, "bg_count" : 214236, "buckets" : [ { "key" : 0, "key_as_string" : "false", "doc_count" : 8678, "score" : 0.0035132209370831945, "bg_count" : 208707 } ] } }, { "key" : "202", "doc_count" : 8077, "significant_closed_types" : { "doc_count" : 8077, "bg_count" : 214236, "buckets" : [ { "key" : 1, "key_as_string" : "true", "doc_count" : 288, "score" : 0.013607310085606722, "bg_count" : 5529 } ] } }, { "key" : "332", "doc_count" : 7709, "significant_closed_types" : { "doc_count" : 7709, "bg_count" : 214236, "buckets" : [ { "key" : 0, "key_as_string" : "false", "doc_count" : 7513, "score" : 3.8331003046076514E-4, "bg_count" : 208707 } ] } }, { "key" : "402", "doc_count" : 7553, "significant_closed_types" : { "doc_count" : 7553, "bg_count" : 214236, "buckets" : [ { "key" : 0, "key_as_string" : "false", "doc_count" : 7462, "score" : 0.013954142353975404, "bg_count" : 208707 } ] } }, { "key" : "127", "doc_count" : 6268, "significant_closed_types" : { "doc_count" : 6268, "bg_count" : 214236, "buckets" : [ { "key" : 0, "key_as_string" : "false", "doc_count" : 6227, "score" : 0.019647870575800665, "bg_count" : 208707 } ] } }, { "key" : "110", "doc_count" : 5887, "significant_closed_types" : { "doc_count" : 5887, "bg_count" : 214236, "buckets" : [ { "key" : 0, "key_as_string" : "false", "doc_count" : 5818, "score" : 0.014290954650314321, "bg_count" : 208707 } ] } } ] } } } |
上記ではカテゴリで分類された情報から、閉店された店で特定ジャンルでの閉店傾向などとして調べています。
一件、「3.8331003046076514E-4」とスコアが「0.000383310030460765」と極端に小さくなる値があり、調べていくことで特殊な関連など見るけることができるかもしれません。
今回はここまでで。
次回はAnalyzerの設定を確認し、より日本語などの検索に適した設定などを確認してみます。
★関連記事
Elasticsearch 6 を使ったデータ検証 その1(Dockerでコンテナの作成と確認)
Elasticsearch 6 を使ったデータ検証 その2(マッピングの登録をしてみる)
Elasticsearch 6 を使ったデータ検証 その3(bulkでデータを投入してみる)
Elasticsearch 6 を使ったデータ検証 その4(チュートリアル記事とデータの検索での比較)
Elasticsearch 6 を使ったデータ検証 その5(クエリでの検索)
Elasticsearch 6 を使ったデータ検証 その7(Analyzerについて)
このブログは株式会社CoLabMixによる技術ブログです。
GCP、AWSなどでのインフラ構築・運用や、クローリング・分析・検索などを主体とした開発を行なっています。
Ruby on RailsやDjango、Pythonなどの開発依頼などお気軽にお声がけください。
開発パートナーを増やしたいという企業と積極的に繋がっていきたいです。
お問い合わせやご依頼・ご相談など