es查询-复合查询

复合搜索(compound query)
布尔搜索(bool query)
bool 查询用bool操作来组合多个查询子句为一个查询。 可用的关键字:
must:必须满足
filter:必须满足,对集合包含/排除的简单检查,计算速度非常快,不参与、不影响评分
should:或
must_not:必须不满足,在filter上下文中执行,不参与、不影响评分

 

curl 'locahost:9200/_search ' -d  '...'   搜索整个集群

curl 'localhost:9200/get-together/_search -d '...'   搜索整个get-together索引

curl 'localhost:9200/get-together/event/_search -d '...'  搜索整个get-together索引中的event事件

curl 'localhost:9200/_all/event/_search' -d '...'   查询所有索引中的event事件

curl 'localhost:9200/*/event/_search' -d '...'   查询所有索引中的event事件

curl 'localhost:9200/get-together,other/event,group/_search' -d '...'  在get-other和其他索引中搜索事件 和 分组类型

curl 'localhost:9200/+get-toge*,-get-together/_search' -d '...'   搜索所有名字以 get-toge开头的索引,但是不包括get-together

 

description中必须包含java,
price必须满足大于100小于1000,
name字段可以是lucene或者是solr中的一种即可,
时间满足。。。。
POST /book/_search
{
"query": {
"bool" : {
"filter" : {
"match" : { "description" : "java" }
},
"must": [
{
"range" : {
"price" : { "gte" : 100, "lte" : 1000 }
}
},
{"bool": {
"should": [
{"term":{"name":"lucene"}},
{"term":{"name":"solr"}}
]
}}
],
"must_not": [
{
"range": {
"timestamp": {
"gte": "18/08/2020",
"lte": "2021",
"format": "dd/MM/yyyy||yyyy"
}
}
}
]
}
}
}

# Range查询 和 过滤器
curl 'localhost:9200/get-together/_search' -d '{\
  "query":{
    "range":{
      "created_on":{
        "gt":"2012-05-01",
        "lt":"2012-09-01"
      }
    }
  }
}
'

curl 'localhost:9200/get-together/_search' -d '{\
  "query":{
    "filtered":{
      "query":{
        "match_all":{}
      },
      "filter":{
        "range":{
          "created_on":{
            "gt":"2012-05-01",
            "lt":"2012-09-01"
          }

        }
      }
    }
  }
}
'

# prefix查询和过滤器
curl 'localhost:9200/get-together/_search' -d '{\
  "query":{
    "prefix":{
      "title":"liber"
    }
  }
}
'
 
curl 'localhost:9200/get-together/_search' -d '{\
  "query":{
    "filtered":{
      "query":{
        "match_all":{}
      },
      "filter":{     
        "prefix":{
          "title":"liber"
        }
      }
    }
  }
}
'
# wildcard查询,类似以shell通配符的工作方式
curl 'localhost:9200/get-together/_search' -d '{\
  "query":{
    "whildcard":{
      "title":"ba*n"    # 会匹配 bacon 和 barn ba?n 只会匹配barn
    }
  }
}
'
# exists过滤器
curl 'localhost:9200/get-together/_search' -d '{
  "query":{
    "filtered":{
      "query"{"match_all":{}},
      "filter":{
        "exists":{"filed":"location.geolocation"}
      }
    }
  }
}'

# missing 过滤器
curl 'localhost:9200/get-together/_search' -d '{
  "query":{
    "filtered":{
      "query"{"match_all":{}},
      "filter":{
        "missing":{
          "filed":"reviews",
          "existence":true,    # 发现完全缺失 reviews字段的文档
          "null_value":true
        }
      }
    }
  }
}'






 

posted @ 2021-11-30 23:07  Wind_LPH  阅读(757)  评论(0)    收藏  举报