【Elasticsearch系列十】DSL 语法练习

2024-09-17 22:05:53 浏览数 (1)

1.match_all

代码语言:apl复制
GET /book/_search
{
    "query": {
        "match_all": {}
    }
}

2.match

代码语言:apl复制
GET /book/_search
{
	"query": {
		"match": {
			"description": "java程序员"
		}
	}
}

3.multi_match

代码语言:apl复制
GET /book/_search
{
  "query": {
    "multi_match": {
      "query": "java程序员",
      "fields": ["name", "description"]
    }
  }
}

4.range query 范围查询

代码语言:apl复制
GET /book/_search
{
  "query": {
    "range": {
      "price": {
        "gte": 80,
		"lte": 90
      }
    }
  }
}

5.term query

字段为 keyword 时,存储和搜索都不分词

代码语言:apl复制
GET /book/_search
{
  "query": {
    "term": {
      "description": "java程序员"
    }
  }
}

6.terms query

代码语言:apl复制
GET /book/_search
{
    "query": { "terms": { "tag": [ "search", "full_text", "nosql" ] }}
}

7.exist query

查询有某些字段值的文档

代码语言:apl复制
GET /_search
{
    "query": {
        "exists": {
            "field": "join_date"
        }
    }
}

8.Fuzzy query

返回包含与搜索词类似的词的文档,该词由 Levenshtein 编辑距离度量。

包括以下几种情况:

  • 更改角色(box→fox)
  • 删除字符(aple→apple)
  • 插入字符(sick→sic)
  • 调换两个相邻字符(ACT→CAT)
代码语言:apl复制
GET /book/_search
{
    "query": {
        "fuzzy": {
            "description": {
                "value": "jave"
            }
        }
    }
}

9.IDs

代码语言:apl复制
GET /book/_search
{
    "query": {
        "ids" : {
            "values" : ["1", "4", "100"]
        }
    }
}

10.prefix 前缀查询

代码语言:apl复制
GET /book/_search
{
    "query": {
        "prefix": {
            "description": {
                "value": "spring"
            }
        }
    }
}

11.regexp query

正则查询

代码语言:apl复制
GET /book/_search
{
    "query": {
        "regexp": {
            "description": {
                "value": "j.*a",
                "flags" : "ALL",
                "max_determinized_states": 10000,
                "rewrite": "constant_score"
            }
        }
    }
}

Elasticsearch 的主要优点包括:

  1. 分布式设计:Elasticsearch 天然支持分布式,可以很容易地横向扩容,处理 PB 级结构化或非结构化数据。
  2. 高效的搜索能力:Elasticsearch 提供了全文搜索功能,支持模糊查询、前缀查询、通配符查询等,并且具有强大的聚合分析功能。
  3. 快速的查询速度:Elasticsearch 的底层使用 Lucene 作为搜索引擎,并在此之上做了多重优化,保证了用户对数据查询的需求。
  4. 易用性:Elasticsearch 提供了简单的 RESTful API,天生的兼容多语言开发,上手容易,开箱即用。
  5. 丰富的生态圈:Elasticsearch 有丰富的插件和工具,如 Logstash、Kibana、Beats 等,形成了强大的 Elastic Stack 生态。

Elasticsearch 的使用场景包括:

  1. 应用搜索:为网站或应用程序提供搜索功能,如电商、社交媒体等。
  2. 日志记录和日志分析:收集、存储和分析服务器日志、应用日志等。
  3. 基础设施监控:监控服务器、网络设备等基础设施的性能指标。
  4. 安全分析:分析安全日志,进行入侵检测和威胁分析。
  5. 地理位置数据分析:处理地理空间数据,提供地理位置搜索服务。
  6. 商业智能:对商业数据进行分析,提供决策支持。

Elasticsearch 的引入主要是为了应对大数据环境下的海量数据检索和实时分析需求,它通过分布式架构和高效的索引机制,提供了快速的搜索和分析能力。然而,Elasticsearch 也存在一些潜在风险,如响应时间问题和任务恢复延迟等,需要通过优化配置和维护来降低这些风险的影响。

0 人点赞