Elasticsearch DSL搜索

Elasticsearch DSL搜索教程

Elasticsearch 的搜索主要有两种方式,即:使用 查询字符串 进行搜索和使用 DSL 进行查询,DSL 的全称为 Domain Specified Language,其中 DSL 的方式使用起来更方便。

Elasticsearch DSL搜索详解

语法

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

参数

参数 描述
indexname 需要搜索的索引名

说明

使用 DSL 查询我们只需要将需要查询的内容写在 query 里面即可。

案例

DSL搜索所有记录

我们在 Kibana 的控制台上,输入以下代码,新建一个文档

PUT /haicodernet/_doc/1 { "name" : "javascript", "desc" : "javascript module", "categorys" : 5, "author" : "jobs steven", "tags": [ "javascript", "vue" ], "index":"www.haicoder.net" }

输入完成后,我们点击运行按钮,输出了最终的运行结果,如下图所示:

39_Elasticsearch DSL查询.png

我们看到,此时我们创建文档成功了,现在,我们再次输入以下代码,再次创建一条文档:

PUT /haicodernet/_doc/2 { "name" : "server", "desc" : "server module", "categorys" : 10, "author" : "cainiao pei", "tags": [ "server", "python" ], "index":"www.haicoder.net" }

输入完成后,我们点击运行按钮,输出了最终的运行结果,如下图所示:

40_ElasticsearchDSL查询.png

同样,我们再次创建一条记录,使用如下命令:

PUT /haicodernet/_doc/3 { "name" : "tools", "desc" : "tools module", "categorys" : 15, "author" : "cainiao pei", "tags": [ "tools", "vim" ], "index":"www.haicoder.net" }

即,我们再次成功创建了一个文档,现在,我们使用 DSL 进行文档搜索,具体命令如下:

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

输入完成后,我们点击运行按钮,输出了最终的运行结果,如下图所示:

41_Elasticsearch DSL查询.png

我们看到,我们使用 DSL 查询出了所有的记录。

DSL指定条件搜索

我们继续使用上面创建的三个文档,现在,我们使用查 DSL 进行文档搜索,具体命令如下:

GET /haicodernet/_search { "query" : { "match" : { "author" : "cainiao pei" } } }

输入完成后,我们点击运行按钮,输出了最终的运行结果,如下图所示:

42_Elasticsearch DSL查询.png

我们看到,我们使用了 DSL 查询了 author 字段为 “cainiao pei” 的所有文档共返回了两条记录。

DSL排序搜索

我们继续使用上面创建的三个文档,现在,我们使用查 DSL 进行文档搜索并排序,具体命令如下:

GET /haicodernet/_search { "query" : { "match" : { "author" : "cainiao pei" } }, "sort": [ { "categorys": "desc" } ] }

输入完成后,我们点击运行按钮,输出了最终的运行结果,如下图所示:

43_Elasticsearch DSL查询.png

我们看到,我们使用了 DSL 查询了 author 字段为 “cainiao pei” 的所有文档并且将结果按照 categorys 倒叙排序,最后共返回了两条记录,并且按照了 categorys 倒叙排序了。

Elasticsearch DSL搜索总结

Elasticsearch 的搜索主要有两种方式,即:使用查询字符串进行搜索和使用 DSL 进行查询,DSL 的全称为 Domain Specified Language,其中 DSL 的方式使用起来更方便。