Elasticsearch7.3 SQLクエリーの使用
9004 ワード
インテリジェントポイント
本文を読み終えて以下の技能を習得する
sqlを使用したドキュメントクエリーsqlをQueryDsl に翻訳
ぜんちじょうけん
Elasticsearch&kibana本明細書はElasticsearch 7に基づく.3&kibana7.3実演を行い、仮想マシンIP
データの準備
デモンストレーションは、kibanaに内蔵サンプルデータに基づいて行い、以下の手順でサンプルデータ追加アクセスkibanaアドレス
SQLクエリー
サンプルデータの表示
前回インポートしたデータは
mapping戻り情報に基づいて、次のフィールドを選択してクエリーテストを行います.
フィールド名
を選択します.
説明
timestamp
date
タイムスタンプ
clientip
ip
クライアントIP
machine.os
text
OSバージョン
request
text
要求url
response
text
ステータスコードを返す
単純なクエリー
統計Unique Visitors{{とうけい:Unique Visitors}}
今日のUnique Visitorsを集計し、ダッシュボードの数値と照合して
SqlをqueryDslに翻訳
本文を読み終えて以下の技能を習得する
sqlを使用したドキュメントクエリーsqlをQueryDsl に翻訳
ぜんちじょうけん
Elasticsearch&kibana本明細書はElasticsearch 7に基づく.3&kibana7.3実演を行い、仮想マシンIP
192.168.1.14
、kibanaアドレスhttp://192.168.1.14:5601
関連環境がなければCentos 7を参照してElasticsearch&Kibana をインストールすることができる.データの準備
デモンストレーションは、kibanaに内蔵サンプルデータに基づいて行い、以下の手順でサンプルデータ追加アクセスkibanaアドレス
http://192.168.1.14:5601
を行い、
アイコン-> Kibana
を順次クリックし、下図の赤い線と矢印で示すをクリック
をクリックしてサンプルWebログをkibanaに追加し、下図に示すデータ追加が完了すると、
->
の順にクリック、下図に示すのように下図に示すダッシュボードが出現し、ダッシュボードにデータがある場合は、データのインポートに成功することを示す. SQLクエリー
サンプルデータの表示
前回インポートしたデータは
kibana_sample_data_logs
というインデックスに存在します.#
GET _cat/indices/*logs?v&h=index,docs.*
# , 14074
index docs.count docs.deleted
kibana_sample_data_logs 14074 0
# mapping
GET kibana_sample_data_logs/_mapping
#
{
"kibana_sample_data_logs" : {
"mappings" : {
"properties" : {
"@timestamp" : {
"type" : "alias",
"path" : "timestamp"
}
...
"memory" : {
"type" : "double"
},
"utc_time" : {
"type" : "date"
}
}
}
}
}
mapping戻り情報に基づいて、次のフィールドを選択してクエリーテストを行います.
フィールド名
を選択します.
説明
timestamp
date
タイムスタンプ
clientip
ip
クライアントIP
machine.os
text
OSバージョン
request
text
要求url
response
text
ステータスコードを返す
単純なクエリー
#
GET _sql?format=txt
{
"query":"select * from kibana_sample_data_logs"
}
# , sql Array
{
"error": {
"root_cause": [
{
"type": "sql_illegal_argument_exception",
"reason": "Arrays (returned by [tags]) are not supported"
}
],
"type": "sql_illegal_argument_exception",
"reason": "Arrays (returned by [tags]) are not supported"
},
"status": 500
}
#
GET _sql?format=txt
{
"query":"select timestamp,clientip,machine.os,request,response from kibana_sample_data_logs"
}
# 10 ,( 1000 )
timestamp | clientip | machine.os | request | response
------------------------+---------------+---------------+-----------------------------------------------------------+---------------
2019-09-29T00:39:02.912Z|223.87.60.27 |win 8 |/elasticsearch/elasticsearch-6.3.2.deb |200
2019-09-29T03:26:21.326Z|130.246.123.197|win 8 |/beats/metricbeat |200
2019-09-29T03:30:25.131Z|120.49.143.213 |ios |/styles/main.css |503
2019-09-29T03:34:43.399Z|99.74.118.237 |ios |/beats/metricbeat/metricbeat-6.3.2-amd64.deb |200
2019-09-29T03:37:04.863Z|177.111.217.54 |win 7 |/enterprise |200
2019-09-29T03:49:40.669Z|106.225.58.146 |win 7 |/apm |503
2019-09-29T03:57:39.612Z|6.138.148.165 |win 8 |/beats/metricbeat/metricbeat-6.3.2-amd64.deb |200
2019-09-29T04:18:12.345Z|218.148.135.12 |win 8 |/beats/filebeat/filebeat-6.3.2-linux-x86_64.tar.gz |200
統計Unique Visitors{{とうけい:Unique Visitors}}
今日のUnique Visitorsを集計し、ダッシュボードの数値と照合して
->
->
をクリックし、下図に示す今日のデータを下図に示します.Unique Visitors=208
sqlを使用して統計検証を行います# Unique Visitors, IP
GET _sql?format=txt
{
"query":"""select count(distinct clientip) from kibana_sample_data_logs
where timestamp>= '2019-10-11T00:00:00+08:00'
and timestamp < '2019-10-12T00:00:00+08:00'"""
}
# ,
count(distinct clientip)
------------------------
208.0
SqlをqueryDslに翻訳
#
GET _sql/translate
{
"query":"select timestamp,clientip,machine.os,request,response from kibana_sample_data_logs"
}
#
{
"size" : 1000,
"_source" : {
"includes" : [
"machine.os",
"request",
"response"
],
"excludes" : [ ]
},
"docvalue_fields" : [
{
"field" : "timestamp",
"format" : "epoch_millis"
},
{
"field" : "clientip"
}
],
"sort" : [
{
"_doc" : {
"order" : "asc"
}
}
]
}
# queryDsl
GET kibana_sample_data_logs/_search
{
"size" : 1000,
"_source" : {
"includes" : [
"machine.os",
"request",
"response"
],
"excludes" : [ ]
},
"docvalue_fields" : [
{
"field" : "timestamp",
"format" : "epoch_millis"
},
{
"field" : "clientip"
}
],
"sort" : [
{
"_doc" : {
"order" : "asc"
}
}
]
}
#
{
"took" : 31,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 10000,
"relation" : "gte"
},
"max_score" : null,
"hits" : [
{
"_index" : "kibana_sample_data_logs",
"_type" : "_doc",
"_id" : "dSgCu20BA5mecxzOBkZa",
"_score" : null,
"_source" : {
"request" : "/elasticsearch/elasticsearch-6.3.2.deb",
"machine" : {
"os" : "win 8"
},
"response" : 200
},
"fields" : {
"timestamp" : [
"1569717542912"
],
"clientip" : [
"223.87.60.27"
]
},
"sort" : [
0
]
},
...
}