在 Elasticsearch 中,可以使用查询来进行数据过滤和筛选。以下是一些常见的查询类型:
Term Query(词项查询):它会精确匹配一个字段中的某个词项。
Match Query(匹配查询):它会根据某个字段的内容来查找文档,可以支持模糊匹配。
Range Query(范围查询):它会查找一个字段在某个范围之内的文档。
Bool Query(布尔查询):它可以将多个查询组合起来,实现复杂的过滤逻辑。
其中,最常用的是 Term Query 和 Match Query。例如,如果要查找所有商品名称包含“手机”的文档,可以使用 Match Query:
GET /my_index/_search
{
"query": {
"match": {
"product_name": "手机"
}
}
}
如果要查找价格在 100 到 500 元之间的商品,可以使用 Range Query:
GET /my_index/_search
{
"query": {
"range": {
"price": {
"gte": 100,
"lte": 500
}
}
}
}
以上仅是部分查询方式,具体还有很多其他查询和过滤方法。
需要注意的是,在 Elasticsearch 中,查询结果是按照相关性排序的,默认情况下会返回相关性最高的前10条记录。如果需要返回全部符合条件的文档,可以使用 size 参数来设置。
查询语句还可以通过高亮显示匹配的关键词,让用户更加明确地看到查询结果中哪些部分与查询条件匹配。例如:
GET /my_index/_search
{
"query": {
"match": {
"product_name": "手机"
}
},
"highlight": {
"fields": {
"product_name": {}
}
}
}
这个查询会对所有字段中包含“手机”的文档进行搜索,同时在匹配的部分高亮显示。