子条件查询
子条件查询指特定字段查询所指特定值
全文本查询
全文本查询针对文本类型数据
字段级别查询
针对结构化数据,如数字,日期等
Query Context
Query Context 在查询过程中,除了判断文档是否满足查询条件外,ES还会计算一个_score来标识匹配的程度,指在判断目标文档和查询条件匹配的有多好
案例一:
post 127.0.0.1:9200/people/_search
{
"query": {
# 模糊匹配(会匹配出ElasticSearch和入门两个关键词,如:ElasticSearch从开始到放弃 也会被匹配出来)
# ”match“: {"name": "ElasticSearch入门"}
# 全匹配
# "match_phrase": {"name": "ElasticSearch入门"}
”multi_match“: {
"query": "瓦力",
# 查询name或age包含 瓦力
”fields“: ["name", "age"]
}
}
}
案例二:
post 127.0.0.1:9200/people/_search
{
"query": {
"query_string": {
# 语法查询
"query": "(ElasticSearch AND 入门) OR Python",
# 指定查询字段
”fields“: ["name", "age"]
}
}
}
案例三:
post 127.0.0.1:9200/people/_search
{
"query": {
# 查询age等于100的数据
# ”term“: {"age": 100}
# 查询age大于等于50小于等于100的数据
# "range": {"age": {"gte": 50, "lte": 100}}
# 查询date大于2017-01-01到现在的数据
”range“: {"date": {"gt": "2017-01-01", "lte": "now"}}
}
}
Filter Context
Filter Context 在查询过程中值判断该文档是否满足条件,只有Yes或No
post 127.0.0.1:9200/people/_search
{
"query": {
"bool": {
"filter": {
"term": {"age": 100}
}
}
}
}
复合条件查询
符合条件查询指以一定的逻辑组合子条件查询
固定分数查询
post 127.0.0.1:9200/people/_search
{
"query": {
# 固定_score分数
"constant_score":{
"filter":{
"match": {"name": "ElasticSearch"}
},
# 指定_score分数
"boost": 2
}
}
}
布尔查询
post 127.0.0.1:9200/people/_search
{
"query": {
”bool“: {
# 或 or
# "should": []
# 取反 不等于
# "must_not":[]
# 与 and (name为瓦力并且age为100)
"must":[
{
"match":{"name": ”瓦力“}
},
{
"match":{"age": 100 }
}
],
# 只返回country为China的
"filter": {
"term": {"country": "China"}
}
}
}
}