赞
踩
Elasticsearch提供了丰富的高级检索语法,包括但不限于term
、prefix
、wildcard
、fuzzy
和boost
等。以下是对这些检索类型的详细介绍及实战示例:
GET /my_index/_search
{
"query": {
"term": {
"field_name": "exact_value"
}
}
}
GET /my_index/_search
{
"query": {
"prefix": {
"title": "quick" // 查找title字段以"quick"开头的所有文档
}
}
}
GET /my_index/_search
{
"query": {
"wildcard": {
"title": {
"value": "qu?ck*brown*fox"
}
}
}
}
GET /my_index/_search
{
"query": {
"fuzzy": {
"title": {
"value": "elasticsearcch",
"fuzziness": "AUTO" // 默认最大编辑距离,也可以设定为2、"1~2"等
}
}
}
}
GET /my_index/_search { "query": { "bool": { "should": [ {"match": {"title": "Elasticsearch"}}, {"match": {"description": "Full-text search engine"}}, { "match": { "tag": "elasticsearch", "boost": 2 // 提升tag字段匹配的权重 } } ] } } }
term
查询,目标字段通常应该是keyword
类型而非text
类型,以避免分析器的影响。fuzziness
参数可以根据实际情况设置,较大的值允许更多的匹配可能性,但也可能导致性能下降。boost
值越大,相关性评分对这个字段或查询的重视程度越高,在结果排序时具有更高的优先级。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。