1. Match Query (全文检索查询)
-
用于执行全文检索,适合搜索文本字段。
{
“query”: {
“match”: {
“field”: “value”
}
}
} -
match_phrase:精确匹配短语,适合用于短语搜索。
{
“query”: {
“match_phrase”: {
“field”: “text”
}
}
}
2. Term Query (精确匹配查询)
-
用于对某个字段的精确值进行查询,常用于不分词的字段(如ID、标签、关键词等)。
{
“query”: {
“term”: {
“field”: “value”
}
}
}
3. Range Query (范围查询)
-
用于查询数值、日期、时间等范围内的数据。
{
“query”: {
“range”: {
“field”: {
“gte”: 10, // 大于等于
“lte”: 100, // 小于等于
“gt”: 10, // 大于
“lt”: 100 // 小于
}
}
}
}
4. Bool Query (布尔查询)
-
用于将多个查询组合在一起,可以使用 must、should、must_not 等操作符。
{
“query”: {
“bool”: {
“must”: [
{ “match”: { “field1”: “value1” } },
{ “match”: { “field2”: “value2” } }
],
“filter”: [
{ “range”: { “price”: { “gte”: 50 } } }
],
“should”: [
{ “match”: { “field3”: “value3” } }
],
“must_not”: [
{ “term”: { “field4”: “value4” } }
]
}
}
}
5. Prefix Query (前缀匹配查询)
-
用于查询字段值的前缀匹配,常用于搜索补全或模糊搜索。
{
“query”: {
“prefix”: {
“field”: “prefix_value”
}
}
}
6. Wildcard Query (通配符查询)
-
支持
*
(匹配任意字符)和?
(匹配单个字符)的通配符查询。{
“query”: {
“wildcard”: {
“field”: “prefix*”
}
}
}
7. Fuzzy Query (模糊查询)
-
用于查询与某个值相似的字段,常用于容忍拼写错误的场景。
{
“query”: {
“fuzzy”: {
“field”: {
“value”: “exampl”
}
}
}
}
8. Regexp Query (正则表达式查询)
-
使用正则表达式进行查询。
{
“query”: {
“regexp”: {
“field”: “pattern.*”
}
}
}
9. Match All Query (匹配所有文档)
-
用于返回索引中的所有文档。
{
“query”: {
“match_all”: {}
}
}
10. Term Range Query (字段范围查询)
-
用于查询一个字段值在特定范围内的文档,类似
range query
,但term
查询是基于精确值的。{
“query”: {
“range”: {
“field”: {
“gte”: 5,
“lte”: 10
}
}
}
}
11. Exists Query (字段存在查询)
-
用于查询某个字段是否存在。
{
“query”: {
“exists”: {
“field”: “field_name”
}
}
}
12. Geo Queries (地理位置查询)
-
Elasticsearch 支持基于地理位置的查询,如基于位置的范围查询或距离查询。
-
Geo Distance Query
{
“query”: {
“bool”: {
“filter”: {
“geo_distance”: {
“distance”: “200km”,
“location”: {
“lat”: 40.73,
“lon”: -74.1
}
}
}
}
}
}