Elasticsearch Query DSL

什么是Query DSL

Query DSL 是 Elasticsearch 的核心,搜索方面的项目大部分时间都耗费在对查询结果的调优上。因此对 Query DSL 的理解越深入,越能节省项目时间,并给用户好的体验。

Elasticsearch 提供了一个完整的 query DSL,并且是 JSON 形式的。

Query DSL详解

语法

GET /indexname/_search { "query": { "match_all": {} } }

说明

搜索 indexname 下面所有的文档。

Query DSL基本语法

语法一

{ QUERY_NAME: { ARGUMENT: VALUE, ARGUMENT: VALUE,... } }

语法二

{ QUERY_NAME: { FIELD_NAME: { ARGUMENT: VALUE, ARGUMENT: VALUE,... } } }

DSL多个搜索条件

语法

GET /indexname/_search { "query": { "bool": { "must": [ { "match": { "title": "elasticsearch" } } ], "should": [ { "match": { "content": "elasticsearch" } } ], "must_not": [ { "match": { "author_id": 111 } } ] } } }

说明

title 必须包含 elasticsearch,content 可以包含 elasticsearch 也可以不包含,author_id 必须不为 111。

Elasticsearch Query DSL总结

Query DSL 是 Elasticsearch 的核心,搜索方面的项目大部分时间都耗费在对查询结果的调优上。因此对 Query DSL 的理解越深入,越能节省项目时间,并给用户好的体验。