欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

elasticsearch全文检索/分词/短语/多字段检索/范围查询/排序/分页/复合查询/使用filter查询

时间:2023-06-19
1、分词匹配 :match

效果: 可查询到detail 中包含天性 / 聪明 的数据

GET jt46/user/_search
{
  "query": {
    "match": {
      "detail": "天性聪明"
    }
  }
}

2、短语匹配 : match_phrase

效果: 只能查询到detail 中,分词含有包含 " 愚笨天成 " 的数据 , 必须完全匹配

GET jt46/user/_search
{
  "query": {
    "match_phrase": {
      "detail": "愚笨天成"
    }
  }
}

3.多字段检索  : multi_match

示例效果: 在detail 和 realName 字段中查询 apple

GET jt46/user/_search
{
  "query": {
    "multi_match": {
      "fields": ["detail", "realName"],
      "query": "apple"
    }
  }
}

4.范围查询 : range

示例效果:  查询年龄大于等于10 ,小于等于30 的数据

GET jt46/user/_search
{
  "query": {
    "range": {
      "age": {
        "gte": 10,
        "lte": 30
      }
    }
  }
}

5.排序 : sort

效果: 按年龄升序排序

GET jt46/user/_search
{
  "sort": [
    {
      "age": {
        "order": "asc"
      }
    }
  ]
}

6.分页 : from(起始序号) / size (页面大小)

效果: 从0号开始 , 每页3条数据

GET jt46/user/_search
{
  "sort": [
    {
      "age": {
        "order": "asc"
      }
    }
  ], 
  "from": 0,
  "size": 3
}

7.复合查询 : 关键字bool, 且条件用 must , 或条件用 should

效果:  detail 字段分词中包含" 愚笨 " 或 年龄大于等于20,小于等于40的数据

GET jt46/user/_search
{
  "query": {
    "bool": {
      "should": [   
        {
          "match": {
            "detail": "愚笨"
          }
        },
        {
          "range": {
            "age": {
              "gte": 20,
              "lte": 40
            }
          }
        }
      ]
    }
  }
}

8. 使用filter查询
注: 使用filter查询的条件不参与结果评分

GET jt46/user/_search
{
  "query": {
    "bool": {
      "filter": {
        "range": {
          "age": {
            "gte": 10,
            "lte": 30
          }
        }
      },
      "must": [
        {
          "match": {
            "detail": "愚笨"
          }
        }
      ]
    }
  }
}


Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。