温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

elasticsearch查询怎么写

发布时间:2026-08-28 02:11:19 来源:亿速云 阅读:100 作者:小樊 栏目:软件技术

Elasticsearch 的查询写法取决于查询目的和使用的 API。下面我用最常见场景 + 示例给你一个速查式说明,基本够 90% 使用场景。


一、基础查询结构(Query DSL)

Elasticsearch 查询主要用 Query DSL(JSON),核心结构是:

{
  "query": {
    ...
  }
}

二、常用查询类型

1️⃣ 精确匹配(term)

适合:keyword、id、状态、枚举

{
  "query": {
    "term": {
      "status": "active"
    }
  }
}

⚠️ 不要对 text 类型字段用 term


2️⃣ 全文搜索(match)

适合:text 类型字段

{
  "query": {
    "match": {
      "title": "elasticsearch 查询"
    }
  }
}

3️⃣ 多字段搜索(multi_match)

{
  "query": {
    "multi_match": {
      "query": "elasticsearch",
      "fields": ["title", "content"]
    }
  }
}

4️⃣ 范围查询(range)

{
  "query": {
    "range": {
      "price": {
        "gte": 100,
        "lte": 500
      }
    }
  }
}

5️⃣ 存在字段(exists)

{
  "query": {
    "exists": {
      "field": "email"
    }
  }
}

6️⃣ 布尔查询(bool)✅ 最常用

{
  "query": {
    "bool": {
      "must": [
        { "match": { "title": "elasticsearch" } }
      ],
      "filter": [
        { "term": { "status": "active" } },
        { "range": { "create_time": { "gte": "2024-01-01" } } }
      ]
    }
  }
}

说明:

  • must:必须匹配(影响评分)
  • filter:必须匹配(不评分,快)
  • should:可选匹配
  • must_not:不能匹配

三、分页、排序、字段过滤

{
  "from": 0,
  "size": 10,
  "sort": [
    { "create_time": "desc" }
  ],
  "_source": ["id", "title", "status"]
}

四、模糊查询(fuzzy)

{
  "query": {
    "fuzzy": {
      "title": {
        "value": "elastcsearch",
        "fuzziness": "AUTO"
      }
    }
  }
}

五、聚合查询(aggregation)

按状态分组

{
  "aggs": {
    "status_count": {
      "terms": {
        "field": "status"
      }
    }
  }
}

六、Java / REST API 示例

REST API

GET /index_name/_search
{
  "query": {
    "match": {
      "title": "elasticsearch"
    }
  }
}

Java High Level Client(示例)

SearchRequest request = new SearchRequest("index_name");
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.matchQuery("title", "elasticsearch"));
request.source(sourceBuilder);

七、常见坑提醒 ⚠️

问题 说明
term 查 text 没结果 text 会被分词
中文搜索不准 建议使用 ik 分词器
查询慢 多用 filter,少用 must
分页深 from + size 深分页慢,改用 search_after

八、如果你愿意,我可以帮你:

✅ 根据你的 索引 mapping 写精准查询
✅ 把 SQL 转成 ES 查询
✅ 写 复杂 bool + 聚合
✅ 优化慢查询

你可以直接贴:

  • 索引 mapping
  • 想查的条件(像 SQL 那样描述也行)

我可以直接帮你写好 ✅

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手