You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elasticsearch 6.8.13如何实现类似Oracle的like与or组合模糊查询

Elasticsearch 6.8.13 类like查询实现方案

你需要实现的like 'a%'属于前缀匹配场景,对应Oracle语句可以通过ES的bool查询组合prefix查询实现,具体DSL如下:

GET /替换为你的实际索引名/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "prefix": {
            "field_name1": "a"
          }
        },
        {
          "prefix": {
            "field_name2": "a"
          }
        }
      ],
      "minimum_should_match": 1
    }
  }
}

各部分逻辑说明:

  • should数组下的多个查询条件为OR关系,只要满足其中一个即可命中,对应原SQL中的or逻辑
  • prefix查询为ES内置的前缀匹配查询,功能完全等价于SQL中的like '前缀%'
  • minimum_should_match: 1明确要求至少满足一个should条件,避免无匹配条件的记录被误返回

注意:如果你的field_name1、field_name2是设置了分词的text类型,prefix查询默认匹配分词后的词项前缀。如果你需要匹配字段完整原始值的前缀,请使用字段对应的keyword子字段查询,示例如下:

GET /替换为你的实际索引名/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "prefix": {
            "field_name1.keyword": "a"
          }
        },
        {
          "prefix": {
            "field_name2.keyword": "a"
          }
        }
      ],
      "minimum_should_match": 1
    }
  }
}

如果后续需要实现%a%、%a这类更灵活的模糊匹配,可以替换为wildcard查询,不过前缀匹配场景下prefix查询性能更高,优先推荐使用。

内容的提问来源于stack exchange,提问作者E. Smailov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:18:04