ElasticSearch 实战:ES的高级检索语法 (包括term、prefix、wildcard、fuzzy、boost等)

Elasticsearch提供了丰富的高级检索语法,包括但不限于termprefixwildcardfuzzyboost等。以下是对这些检索类型的详细介绍及实战示例:

1. Term查询

  • 作用:精确匹配指定字段的精确值。
  • 示例
GET /my_index/_search
{
  "query": {
    "term": {
      "field_name": "exact_value"
    }
  }
}

2. Prefix查询

  • 作用:匹配字段中以特定前缀开始的值。
  • 示例
GET /my_index/_search
{
  "query": {
    "prefix": {
      "title": "quick" // 查找title字段以"quick"开头的所有文档
    }
  }
}

3. Wildcard查询

  • 作用:匹配字段中符合通配符模式的值。
  • 示例
GET /my_index/_search
{
  "query": {
    "wildcard": {
      "title": {
        "value": "qu?ck*brown*fox"
      }
    }
  }
}

4. Fuzzy查询

  • 作用:模糊匹配,允许一定程度的拼写错误或字符替换。
  • 示例
GET /my_index/_search
{
  "query": {
    "fuzzy": {
      "title": {
        "value": "elasticsearcch",
        "fuzziness": "AUTO" // 默认最大编辑距离,也可以设定为2、"1~2"等
      }
    }
  }
}

5. Boost(提升权重)

  • 作用:在查询中增加特定字段或查询子句的权重,影响相关性评分。
  • 示例
GET /my_index/_search
{
  "query": {
    "bool": {
      "should": [
        {"match": {"title": "Elasticsearch"}},
        {"match": {"description": "Full-text search engine"}}, 
        {
          "match": {
            "tag": "elasticsearch",
            "boost": 2 // 提升tag字段匹配的权重
          }
        }
      ]
    }
  }
}

注意事项:

  • 上述查询在实际使用中可能需要结合具体字段的映射(mapping)来确定是否合适,例如,对于term查询,目标字段通常应该是keyword类型而非text类型,以避免分析器的影响。
  • fuzziness参数可以根据实际情况设置,较大的值允许更多的匹配可能性,但也可能导致性能下降。
  • boost值越大,相关性评分对这个字段或查询的重视程度越高,在结果排序时具有更高的优先级。
  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值