elasticsearch 查询:其他查询prefix&fuzzy&wildcard&range®exp
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}" #正则
}
}
}

浙公网安备 33010602011771号