当前位置:   article > 正文

Elasticsearch(14) match_phrase_prefix的使用

Elasticsearch(14) match_phrase_prefix的使用

elasticsearch version: 7.10.1

语法

match_phrase_prefix 是 Elasticsearch 中的一个查询类型,它用于执行前缀匹配短语查询。它允许你找到以特定短语开始的文档,而不是仅仅匹配单个单词的前缀。

{  
  "match_phrase_prefix": {  
    "field_name": {  
      "query": "your_phrase_prefix",  
      "max_expansions": 50  
    }  
  }  
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • field_name:你想在其中执行查询的字段名。
  • query:你想匹配的短语前缀。
  • max_expansions(可选):查询将展开为多少个前缀。默认值是 50。增加这个值可能会增加查询的执行时间,但可能会返回更多的结果。

案例1

索引创建

查询product_name 字段以 “apple i” 开头的文档

PUT /products_index  
{  
  "mappings": {  
    "properties": {  
      "product_name": {  
        "type": "text"  
      }  
    }  
  }  
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

文档插入

POST /products_index/_doc/1  
{  
  "product_name": "Apple iPhone 13"  
}  
  
POST /products_index/_doc/2  
{  
  "product_name": "Apple iPad Pro"  
}  
  
POST /products_index/_doc/3  
{  
  "product_name": "Samsung Galaxy S21"  
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

查询语句

GET /products_index/_search  
{  
  "query": {  
    "match_phrase_prefix": {  
      "product_name": {  
        "query": "apple i"  
      }  
    }  
  }  
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
GET /products_index/_search  
{  
  "query": {  
    "match_phrase_prefix": {  
      "product_name": {  
        "query": "apple",  
        "max_expansions": 1  
      }  
    }  
  }  
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这个查询中,我们设置了 max_expansions 为 1,这意味着查询将只展开为最多一个前缀。因此,这个查询可能只返回 “Apple iPhone 13”,因为它是在索引中遇到的第一个以 “apple” 开头的 product_name。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/282186
推荐阅读
相关标签
  

闽ICP备14008679号