24 01 2025

ElasticSearch常用分类查询

1.查询所有 match_all,无需查询条件。

GET /langhaiblogs/_search
{
  "query": {
    "match_all": {}
  }
}

2.全文检索查询:对用户输入的内容进行分词,然后倒排索引进行匹配查询。

match_query:单字段查询

GET /langhaiblogs/_search
{
  "query": {
    "match": {
      "title": "浪海博客"
    }
  }
}

multi_match:允许对多个字段进行查询。

GET /langhaiblogs/_search
{
  "query": {
    "multi_match": {
      "query": "面试",
      "fields": ["title", "abstractText"]
    }
  }
}

3.精确查询:一般是查找 keyword、数值、日期、boolean等类型字段,不会对搜索条件进行分词。

term:词条精确值查询

GET /langhaiblogs/_search
{
  "query": {
    "term": {
      "publicShow": {
        "value": "1"
      }
    }
  }
}

range:根据值的范围查询

GET /langhaiblogs/_search
{
  "query": {
    "range": {
      "publicShow": {
        "gte": 1,
        "lte": 20
      }
    }
  }
}

4.地理查询:根据经纬度进行查询

geo_bounding_box:查询geo_point值在某个矩形范围的所有文档,指定左上、右下两个点的坐标画出一个矩形。

GET /langhai_geo/_search
{
  "query": {
    "geo_bounding_box": {
      "location": {
        "top_left": {
          "lat": 31.1,
          "lon": 121.5
        },
        "bottom_right": {
          "lat": 30.2,
          "lon": 122.7
        }
      }
    }
  }
}

geo_distance:查询指定中心点小于某个距离值的所有文档

GET /langhai_geo/_search
{
  "query": {
    "geo_distance": {
      "distance": "15km",
      "location": "31.1, 121.8"
    }
  }
}

5.复合查询:将简单查询组合起来,实现更复杂的搜索逻辑。

function score:算分函数查询,控制文档相关性算法,控制文档排名。

GET /langhaiblogs/_search
{
  "query": {
    "function_score": {
      "query": {
        "match": {
          "title": "面试"
        }
      },
      "functions": [
        {
          "filter": {
            "match": {
              "title": "为什么"
            }
          },
          "weight": 10
        }
      ],
      "boost_mode": "sum"
    }
  }
}

bool query:布尔查询,利用逻辑关系组合多个其他的查询。

must:必须匹配的条件

should:选择性匹配的条件

must_not:必须不匹配的条件,不参与算分。

filter:必须匹配的条件,不参与算法。

GET /langhaiblogs/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "title": "面试"
          }
        }
      ],
      "must_not": [
        {
          "range": {
            "publicShow": {
              "gte": 10,
              "lte": 20
            }
          }
        }
      ],
      "filter": [
        {
          "term": {
            "id": "97"
          }
        }
      ]
    }
  }
}



四美Java之父 浪海 学习用途。

延伸阅读
  1. 浪海博客系统友情链接说明
  2. 浪海同志的一生
  3. 浪海博客系统部署说明
  4. 浪海皇室 QQ飞车手游
  5. minio 相关说明
  6. 浪海导航关于本站
  7. rabbitMQ 相关说明
  8. mysql相关说明
  9. ribbon负载均衡
  10. gateway服务网关基本使用
如果出现代码等内容显示不正常,使用以前的显示器:以前的显示器
发表评论