[英]How to perform AND condition in elasticsearch query?
我有以下查询,我想在该查询中查询属于范围过滤器中指定日期范围内的ID“ abc_12-def”的索引名。
但是以下查询也正在获取不同ID的值(例如abc_12-edf,abc_12-pgf等),并且这些值超出了日期范围。 关于如何在此处给出AND条件的任何建议? 谢谢。
curl -XPOST 'localhost:9200/indexname/status/_search?pretty=1&size=1000000' -d '{
"query": {
"filtered" : {
"filter": [
{ "term": { "ID": "abc_12-def" }},
{ "range": { "Date": { "gte": "2015-10-01T09:12:11", "lte" : "2015-11-18T10:10:13" }}}
]
}
}
}'
您需要使用布尔查询的AND
又名MUST
调理
{
"query": {
"bool": {
"must": [
{
"term": {
"ID": "abc_12-def"
}
},
{
"range": {
"Date": {
"gte": "2015-10-01T09:12:11",
"lte": "2015-11-18T10:10:13"
}
}
}
]
}
}
}
另外,默认情况下,所有字段都使用标准分析器进行分析 ,这意味着abc_12-def被标记为[abc_12,def]。 term query
不分析字符串。
如果您正在寻找完全匹配的内容,则应将该字段标记为not_analyzed
。 此处说明了如何将其映射为not_analyzed 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.