ES常见查询总结
在Elasticsearch中,常见的查询类型包括:
全文查询(Full text queries):
match
查询:用于全文搜索,可以在全文字段上执行。multi_match
查询:在多个字段上执行match
查询。
精确查询(Term level queries):
term
查询:用于精确匹配,不分析查询字符串。terms
查询:对字段执行多个精确匹配。range
查询:根据值的范围查询。
复合查询(Compound queries):
bool
查询:结合其他查询的结果,执行复杂的逻辑运算。function_score
查询:调整文档的相关性得分。
地理查询(Geo queries):
geo_shape
查询:查找与形状或多边形相交的地理空间数据。geo_bounding_box
查询:查找位于特定边界框内的地理数据。
过滤查询(Filter queries):
exists
查询:查找包含指定字段的文档。prefix
查询:查找字段值以特定前缀开头的文档。
以下是一个使用Elasticsearch DSL(Domain Specific Language)的例子,使用了一些常见查询类型:
{
"query": {
"bool": {
"must": [
{
"match": {
"title": "Elasticsearch"
}
}
],
"filter": [
{
"term": {
"status": "published"
}
},
{
"range": {
"publish_date": {
"gte": "2020-01-01"
}
}
},
{
"geo_bounding_box": {
"location": {
"top_left": {
"lat": 40.73,
"lon": -74.1
},
"bottom_right": {
"lat": 40.01,
"lon": -71.12
}
}
}
}
]
}
}
}
这个查询使用了 bool
查询来组合一个全文匹配查询(match
)和几个过滤查询(term
和 range
)以及一个地理边界框查询(geo_bounding_box
)。它表示搜索在2020年1月1日后发布,且标题中包含"Elasticsearch"字样,并且位于纽约特定区域内的文档。
评论已关闭