我正在尝试使用以下查询运行ElasticSearch搜索。请原谅我的无知,因为我是ES的新手,而且我试图通过试错来尝试按照文档拼凑出来。基本上,唯一正在按预期工作的部分是from,size,sort和严重性匹配。提前谢谢您的帮助!
{
"from":0,
"size":50,
"sort":{"timestamp":{"order":"desc"}},
"query":[
{
"range":{
"timestamp":{"gte":"2013-11-18T05:00:00+00:00","lte":"2013-12-02T05:00:00+00:00"}
}
},
{
"query":{
"match":{"severity":{"query":"medium","operator":"or"}}
}
},
{
"query":{
"constantScore":{
"filter":{
"query":{
"query_string":{"default_field":"_all","query":"10.1.10.22"}
}
}
}
}
}
]
}
答案 0 :(得分:2)
我认为您需要阅读有关Query DSL的更多信息。根据您的输入,这是正确的查询:
{
"query": {
"query_string": {
"default_field": "_all",
"query": "10.1.10.22"
}
},
"filter": {
"bool": {
"must": [
{
"range": {
"timestamp": {
"gte": "2013-11-18T05:00:00+00:00",
"lte": "2013-12-02T05:00:00+00:00"
}
}
},
{
"term": {
"severity": "medium"
}
}
]
}
}
}
以上查询可以解释为: - 首先使用bool过滤器过滤数据,"必须"这里可以理解为" AND"。因此,数据将按"范围内的时间戳过滤..." AND" serverity = medium" - 然后使用" query_string"搜索过滤后的数据。 这将使您的搜索更快。
答案 1 :(得分:0)
在任何情况下,您的查询格式都不正确。如果要组合多个查询,可以使用bool查询。请参阅文档:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html