Query DSL 是 Elasticsearch 的核心,搜索方面的项目大部分时间都耗费在对查询结果的调优上。因此对 Query DSL 的理解越深入,越能节省项目时间,并给用户好的体验。
Elasticsearch 提供了一个完整的 query DSL,并且是 JSON 形式的。
GET /indexname/_search { "query": { "match_all": {} } }
搜索 indexname 下面所有的文档。
{ QUERY_NAME: { ARGUMENT: VALUE, ARGUMENT: VALUE,... } }
{ QUERY_NAME: { FIELD_NAME: { ARGUMENT: VALUE, ARGUMENT: VALUE,... } } }
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。
Query DSL 是 Elasticsearch 的核心,搜索方面的项目大部分时间都耗费在对查询结果的调优上。因此对 Query DSL 的理解越深入,越能节省项目时间,并给用户好的体验。