elasticsearch系列三:常用查询语法
在Elasticsearch中,常见的查询包括:
全文查询(Full text queries):
match
查询:对字段进行全文查询。multi_match
查询:在多个字段上进行全文查询。
精确查询(Term level queries):
term
查询:查询精确匹配的值。terms
查询:查询多个精确匹配的值。
范围查询(Range queries):
range
查询:查询指定范围内的数值或时间。
复合查询(Compound queries):
bool
查询:结合must
,must_not
,should
子句的复合查询。
地理位置查询(Geo queries):
geo_shape
查询:查询指定形状的地理位置。geo_bounding_box
查询:查询指定矩形区域内的地理位置。
高亮查询(Highlighter queries):
highlight
查询:为匹配查询的文档部分提供高亮显示。
下面是一些Elasticsearch查询的示例代码:
// 全文查询
GET /_search
{
"query": {
"match": {
"message": "quick brown fox"
}
}
}
// 多字段全文查询
GET /_search
{
"query": {
"multi_match": {
"query": "quick brown fox",
"fields": ["title", "body"]
}
}
}
// 精确查询
GET /_search
{
"query": {
"term": {
"user_id": "kimchy"
}
}
}
// 范围查询
GET /_search
{
"query": {
"range": {
"age": {
"gte": 10,
"lte": 20
}
}
}
}
// 布尔查询
GET /_search
{
"query": {
"bool": {
"must": { "match": { "title": "quick" }},
"must_not": { "match": { "title": "lazy" }},
"should": [
{ "match": { "body": "brown" }},
{ "match": { "body": "green" }}
]
}
}
}
// 地理位置查询
GET /_search
{
"query": {
"geo_bounding_box": {
"location": {
"top_left": {
"lat": 40.73,
"lon": -74.
},
"bottom_right": {
"lat": 40.01,
"lon": -71.
}
}
}
}
}
// 高亮查询
GET /_search
{
"query": {
"match": {
"message": "quick brown fox"
}
},
"highlight": {
"fields": {
"message": {}
}
}
}
这些查询示例展示了如何在Elasticsearch中使用不同类型的查询。每个查询都有其特定的用途和行为,可以根据需要组合使用以满足复杂的搜索需求。
评论已关闭