elasticsearch 查询:其他查询prefix&fuzzy&wildcard&range&regexp

1. prefix查询

前缀查询,可以通过一个关键字去指定一个field的前缀,从而查到指定的文档。

#测试--prefix查询
POST /king_test_person/_search
{
  "query": {
    "prefix": {
      "name": {
        "value": "张"
      }
    }
  }
}

 

2. fuzzy查询

模糊查询,输入字符的大概,ES就能根据输入的内容大概去匹配结果。
#测试--fuzzy查询
POST /king_test_person/_search
{
  "query": {
    "fuzzy": {
      "company": {
        "value": "盒马先生",
        "prefix_length": 2       #指定前几个字符不允许出现错误
      }
    }
  }
}

  

3. wildcard查询

通配查询,和mysql中的like类似,可以在查询时,在字符串中指定通配符*和占位符?。
#测试--wildcard查询
POST /king_test_person/_search
{
  "query": {
    "wildcard": {
      "company": {
        "value": "中国*"     #可以使用*和?指定通配符和占位符
      }
    }
  }
}

 

4. range查询

范围查询,对某一个field进行大于或者小于的范围指定。
gt:>
lt:<
gte: >=
lte:<=
#测试-range查询
POST /king_test_person/_search
{
  "query": {
    "range": {
      "age": {
        "gte": 5,
        "lte": 20
      }
    }
  }
}

#测试-range查询
POST /king_test_person/_search
{
  "query": {
    "range": {
      "birthday": {
        "gte": "1991-01-01",
        "lte": "1993-01-01"
      }
    }
  }
}

 

5. regexp查询

正则查询,通过编写的正则表达式去匹配内容。
prefix、fuzzy、wildcard、regexp 查询效率相对较低,要求效率比较高时,避免使用
#测试--regexp查询
POST /king_test_person/_search
{
  "query": {
    "regexp": {
      "phone": "135[0-9]{8}"    #正则
    }
  }
}

  

posted @ 2024-01-30 08:33  king_wq_庆  阅读(43)  评论(0编辑  收藏  举报