从 SQL 转换为 elasticsearch 查询
Converting from SQL to elasticsearch query
Elasticsearch 菜鸟,需要查询方面的帮助。我有以下 SQL 查询,我需要将其转换为对 Elasticsearch
的查询
SELECT COUNT(*)
FROM table
WHERE Message LIKE '%Communication has failed.%'
AND [Date] > CONVERT( CHAR(8), GetDate(), 112) + ' 07:40:00'
AND [Date] < CONVERT( CHAR(8), GetDate(), 112) + ' 22:15:00'
我想 运行 使用 curl 对 elasticsearch 进行查询,需要帮助编写查询。
[Date]
等于 Elasticsearch 文档中的 @timestamp
。如果弹性查询语法具有 getdate()
与当前数据的等价物,那也很好。
获取所有结果的最简单方法是使用结果集中的 hits
字段。如果你想这样做,你的查询将是:
POST /my_index/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"message": "*Communication has failed*"
}
},
{
"range": {
"my_date_field": {
"gte": "01/01/2018",
"lt": "01/02/2018",
"format": "dd/MM/yyyy"
}
}
}
]
}
},
"size": 0
}
请注意,我正在对 date
进行范围查询,对 message
进行匹配查询。
我还将 size
设置为零 b/c 我只想取回 hits
值。结果将如下所示:
{
"took": 0,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 346,
"max_score": 0,
"hits": []
}
}
您也可以使用聚合查询,但在这种情况下,您可能希望在一个字段上进行聚合,并且聚合结果将与命中字段值相同。将聚合想象成 SQL 中的 GROUP BY
函数。如果你只给GROUP BY
一组,那么你的组就等于COUNT(*)
的值。如果您有兴趣了解有关聚合的更多信息,请参阅此处的文档:
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-valuecount-aggregation.html
Elasticsearch 菜鸟,需要查询方面的帮助。我有以下 SQL 查询,我需要将其转换为对 Elasticsearch
的查询SELECT COUNT(*)
FROM table
WHERE Message LIKE '%Communication has failed.%'
AND [Date] > CONVERT( CHAR(8), GetDate(), 112) + ' 07:40:00'
AND [Date] < CONVERT( CHAR(8), GetDate(), 112) + ' 22:15:00'
我想 运行 使用 curl 对 elasticsearch 进行查询,需要帮助编写查询。
[Date]
等于 Elasticsearch 文档中的 @timestamp
。如果弹性查询语法具有 getdate()
与当前数据的等价物,那也很好。
获取所有结果的最简单方法是使用结果集中的 hits
字段。如果你想这样做,你的查询将是:
POST /my_index/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"message": "*Communication has failed*"
}
},
{
"range": {
"my_date_field": {
"gte": "01/01/2018",
"lt": "01/02/2018",
"format": "dd/MM/yyyy"
}
}
}
]
}
},
"size": 0
}
请注意,我正在对 date
进行范围查询,对 message
进行匹配查询。
我还将 size
设置为零 b/c 我只想取回 hits
值。结果将如下所示:
{
"took": 0,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 346,
"max_score": 0,
"hits": []
}
}
您也可以使用聚合查询,但在这种情况下,您可能希望在一个字段上进行聚合,并且聚合结果将与命中字段值相同。将聚合想象成 SQL 中的 GROUP BY
函数。如果你只给GROUP BY
一组,那么你的组就等于COUNT(*)
的值。如果您有兴趣了解有关聚合的更多信息,请参阅此处的文档:
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-valuecount-aggregation.html