Elasticsearch提供了多种方式来进行搜索结果排序和过滤,包括:
可以使用sort参数对搜索结果进行排序。例如,按照某个字段的值升序或降序排列搜索结果。
示例查询:
GET /my_index/_search
{
"query": {
"match_all": {}
},
"sort": [
{ "age": {"order": "desc"} },
{ "_score": {"order": "asc"} }
]
}
上面的搜索结果将会先按照age字段的值降序排列,然后再按照匹配度(_score)升序排列。
可以使用filter参数对搜索结果进行过滤。例如,只返回匹配某个条件的文档。
示例查询:
GET /my_index/_search
{
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": {
"range": {
"age": {"gte": 18, "lt": 30}
}
}
}
}
}
上面的查询将只返回age字段大于等于18且小于30的文档。
可以使用highlight参数对搜索结果中匹配的关键词进行高亮处理。例如,将匹配的关键词使用红色标记。
示例查询:
GET /my_index/_search
{
"query": {
"match": {
"content": "some keywords"
}
},
"highlight": {
"fields": {
"content": {}
},
"pre_tags" : ["<span style=\"color:red\">"],
"post_tags" : ["</span>"]
}
}
上面的查询将返回包含"some keywords"的文档,并将匹配的关键词使用红色标记。