当前位置:   article > 正文

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

es prefix

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

1. Term查询

  • 作用:精确匹配指定字段的精确值。
  • 示例
GET /my_index/_search
{
  "query": {
    "term": {
      "field_name": "exact_value"
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2. Prefix查询

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

3. Wildcard查询

  • 作用:匹配字段中符合通配符模式的值。
  • 示例
GET /my_index/_search
{
  "query": {
    "wildcard": {
      "title": {
        "value": "qu?ck*brown*fox"
      }
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

4. Fuzzy查询

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

5. Boost(提升权重)

  • 作用:在查询中增加特定字段或查询子句的权重,影响相关性评分。
  • 示例
GET /my_index/_search
{
  "query": {
    "bool": {
      "should": [
        {"match": {"title": "Elasticsearch"}},
        {"match": {"description": "Full-text search engine"}}, 
        {
          "match": {
            "tag": "elasticsearch",
            "boost": 2 // 提升tag字段匹配的权重
          }
        }
      ]
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

注意事项:

  • 上述查询在实际使用中可能需要结合具体字段的映射(mapping)来确定是否合适,例如,对于term查询,目标字段通常应该是keyword类型而非text类型,以避免分析器的影响。
  • fuzziness参数可以根据实际情况设置,较大的值允许更多的匹配可能性,但也可能导致性能下降。
  • boost值越大,相关性评分对这个字段或查询的重视程度越高,在结果排序时具有更高的优先级。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/882655
推荐阅读
  

闽ICP备14008679号