【ES专题】ElasticSearch 高级查询语法Query DSL实战
GET /_search
{
"query": {
"bool": {
"must": [
{
"match": {
"title": "Elasticsearch"
}
}
],
"filter": [
{
"range": {
"publish_date": {
"gte": "2015-01-01",
"lte": "2016-12-31"
}
}
}
],
"should": [
{
"match": {
"content": "Elasticsearch"
}
}
],
"must_not": [
{
"match": {
"content": "apache"
}
}
]
}
}
}
这个查询使用了布尔查询(bool query),它结合了必须匹配(must)、过滤器(filter)、应该匹配(should)和不能匹配(must\_not)的查询子句。这是一个更为复杂的查询示例,它演示了如何在Elasticsearch中构建更具体和灵活的搜索查询。在这个查询中,我们搜索了标题中包含"Elasticsearch"的文档,同时确保内容中也包含"Elasticsearch",但内容中不能包含"apache"。此外,我们还对发布日期进行了范围过滤,以确保文档的发布日期在2015年1月1日至2016年12月31日之间。
评论已关闭