从SQL转换为elasticsearch查询
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从SQL转换为elasticsearch查询相关的知识,希望对你有一定的参考价值。
Elasticsearch noob并需要查询帮助。我有以下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对弹性搜索运行查询,并需要帮助编写查询。
[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
以上是关于从SQL转换为elasticsearch查询的主要内容,如果未能解决你的问题,请参考以下文章
将 SQL 查询转换为 Elasticsearch dsl 以进行数据可视化
Elasticsearch全文检索技术 一篇文章即可从入门到精通(Elasticsearch安装,安装kibana,安装ik分词器,数据的增删改查,全文检索查询,聚合aggregations)(代码片
ElasticSearch 将嵌套字段的 Rest 查询转换为客户端 Scala/Java 代码
2021年大数据ELK(十六):Elasticsearch SQL(职位查询案例)