es搜索API字段解析(持续更新)

本文深入解析了如何使用 Elasticsearch 的查询语法,包括match、term、range等操作,演示如何构造复杂的布尔查询和聚合分析。通过实例探讨了如何高效地进行文档搜索、排序和数据汇总,适合开发者理解和实践搜索引擎技术。
摘要由CSDN通过智能技术生成
GET /index_name/type_name/_search

{

"query":{ //查询必须有该属性
    "bool":{//bool查询 联合查询 bool中所有字段指定的条件必须满足 bool字段中条件是与的关系
        
        "must|must_not":[//must:必须 must中所有元素必须为true,must_not必须不 所有元素必须为false must和must_not中元素是与的关系,必须都为true才能返回true 以下等价于 field1 = 'xxx' and field2 between 2 and 3 must和must_not正好是反向关系 
            "match":{"field1":"xxx"},
            "range":{"field2":{"gte":2,"lte":3}},
             ...
        ],
        "should":[//should:满足一个 或的关系,元素中有一个满足即可
            "term":{"field4":"xxx"},
            "match_phrase":{"field3":"xxx"},
            "minimum_should_match":2 //should中最少匹配两个
        ],
        "filter":{//对搜索出的结果按条件过滤 filter中的字段匹配不影响评分
            "match":{
                "field1":"xxx"
            }
        },
        ...
        
    }

},
"sort":[ //对结果进行排序 可以多个字段联合排序
    "field1":"asc",
    "field2":"desc",
    ...
],
"aggs":{ //聚合
    "aggs_name":{ //聚合的名称 任意取
        "sum|avg|min|max":{ //指标 支持累和 平均数 最小 最大 基数等等
            "field":"field_name" //需要进行聚合的字段名
        }
    }
},
"_source":[//查询指定字段
    "field1","field2"...
],
"from":0, //分页开始下标
"size":10//数据条数

}


层级结构:

>query
    >match|term|terms|range|match_phrase|...
    >bool
        >must|must_not|should|filter...
                                  >match|term|terms|match_phrase|range...
>sort|agg

注意:query子节点bool 或match|term|terms.. 只能同时存在一个



match子查询中会对搜索词进行分词,如果文档中匹配上了一个分词后的搜索词即会查询出。以下两个句子等价:
{
    "query":{
        "match":{
              "fieldname":"hello world"  
         }
    }
}

{
    "query":{
        "bool":{
              "should":[
                    {"term":{"fieldname":"hello"}},
                    {"term":{"fieldname":"world"}}
                ]
         }
    }
}

match匹配时默认是搜索词分词后匹配文档,多个分词之间是或的关系,可以修改为and的关系:
{
    "query":{
        "match":{
              "fieldname":{
                    "query":"hello world",
                     "operator":"and",   //默认是or
                     "boost":2 //设置匹配该查询后分数的权重
                }
         }
    }
}
 上述语句是查询filedname中有hello又有world的文档,等价于

{
    "query":{
        "bool":{
              "must":[
                    {"term":{"fieldname":"hello"}},
                    {"term":{"fieldname":"world"}}
                ]
         }
    }
}

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值