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}" #正则 } } }