MST

星途 面试题库

面试题:ElasticSearch复杂场景下API返回信息过滤策略

在一个ElasticSearch集群中,索引存储了大量的日志数据,每条日志包含时间、来源IP、操作类型、详细描述等信息。现在需求是:通过API查询最近一周内,来源IP为特定网段(如192.168.1.0/24)且操作类型为‘登录’的日志,并只返回时间和详细描述字段,同时对详细描述字段进行高亮显示。请详细说明实现此需求的API调用过程,包括查询语句、过滤条件、高亮设置等。
43.1万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试
  1. 查询语句构建
    • 使用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": {
            "详细描述": {}
        }
    }
}
  1. 解释
    • 查询部分
      • bool查询结合filter子句来满足多个条件。
      • range过滤用于筛选最近一周内的日志,gte表示大于等于(now - 1w表示当前时间往前推一周),lte表示小于等于当前时间。
      • ip_range过滤用于筛选特定网段的IP,gtelte分别指定IP范围。
      • term过滤用于筛选操作类型为“登录”的日志。
    • _source部分:指定只返回“时间”和“详细描述”字段。
    • highlight部分:对“详细描述”字段进行高亮显示,默认使用<em>标签包裹高亮部分。实际应用中,可以根据需求在highlightfields中对“详细描述”字段的高亮标签等进行更多自定义设置。