- 查询语句构建:
- 使用
POST
请求到Elasticsearch的索引查询API,假设索引名为log_index
,请求地址类似:http://your_elasticsearch_host:9200/log_index/_search
。
- 查询语句如下:
{
"query": {
"bool": {
"filter": [
{
"range": {
"时间": {
"gte": "now-1w",
"lte": "now"
}
}
},
{
"ip_range": {
"来源IP": {
"gte": "192.168.1.0",
"lte": "192.168.1.255"
}
}
},
{
"term": {
"操作类型": "登录"
}
}
]
}
},
"_source": ["时间", "详细描述"],
"highlight": {
"fields": {
"详细描述": {}
}
}
}
- 解释:
- 查询部分:
bool
查询结合filter
子句来满足多个条件。
range
过滤用于筛选最近一周内的日志,gte
表示大于等于(now - 1w
表示当前时间往前推一周),lte
表示小于等于当前时间。
ip_range
过滤用于筛选特定网段的IP,gte
和lte
分别指定IP范围。
term
过滤用于筛选操作类型为“登录”的日志。
_source
部分:指定只返回“时间”和“详细描述”字段。
highlight
部分:对“详细描述”字段进行高亮显示,默认使用<em>
标签包裹高亮部分。实际应用中,可以根据需求在highlight
的fields
中对“详细描述”字段的高亮标签等进行更多自定义设置。