弹性搜索bool查询

时间:2017-07-05 00:26:54

标签: elasticsearch

我的目标是查找最近10条与MSG-1013匹配的消息ID的文档,并且Severity字段必须是info。两个条件都应该满足,匹配文本应该是准确的。我尝试过下面的搜索查询,但它没有给我预期的结果。我在这里做错了什么?

{
    "size": 10,
    "query": {
        "bool": { 
            "must": [
                {
                    "match": { "messageId": "MSG-1013" }
                },
                {
                    "match": { "Severity": "Info" }
                }
            ] 
        }
    }
}

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你想找到具有确切字段的前10个(最近)文档" messageId"和"严重性"。我认为,您不需要得分,因为您的分数似乎是文档时间戳或其他类似日期字段。为此,您可以将bool过滤器与排序查询结合使用。

{ 
    "query": {
        "bool": {
            "filter": [
                { "term": { "messageId": "MSG-1013" } },
                { "term": { "Severity": "Info" } }
            ]
        }
    },
    "sort" : [
        { "documentTimestamp" : {"order" : "desc"}}
    ],
    "size": 10
}