我们在使用 Elasticsearch 的 DSL 进行搜索时,还可以使用全文检索,全文检索会将输入的搜索串拆解开来,去倒排索引里面去一一匹配,只要能匹配上任意一个拆解后的单词,就可以作为结果返回。
GET /indexname/_search { "query" : { "match" : { "field" : "value1 value2" } } }
参数 | 描述 |
---|---|
indexname | 需要搜索的索引名 |
field | 需要查询的字段 |
value1 | field需要查询的值 |
value2 | field需要查询的值 |
只要 field 满足 value1 和 value2 中的任何一个值,就会被返回。
我们在 Kibana 的控制台上,输入以下代码,新建一个文档:
PUT /haicodernet/_doc/1 { "index":"www.haicoder.net", "name" : "javascript", "desc" : "javascript module", "categorys" : 5, "author" : "jobs steven", "tags": [ "javascript", "vue" ] }
输入完成后,我们点击运行按钮,输出了最终的运行结果,如下图所示:
我们看到,此时我们创建文档成功了,现在,我们再次输入以下代码,再次创建一条文档:
PUT /haicodernet/_doc/2 { "index":"www.haicoder.net", "name" : "server", "desc" : "server module", "categorys" : 10, "author" : "cainiao pei", "tags": [ "server", "python" ] }
输入完成后,我们点击运行按钮,输出了最终的运行结果,如下图所示:
同样,我们再次创建一条记录,使用如下命令:
PUT /haicodernet/_doc/3 { "index":"www.haicoder.net", "name" : "tools", "desc" : "tools module", "categorys" : 15, "author" : "cainiao pei", "tags": [ "tools", "vim" ] }
即,我们再次成功创建了一个文档,现在,我们使用 DSL 指定多个条件,进行文档的搜索,具体命令如下:
GET /haicodernet/_search { "query" : { "match" : { "name" : "tools server" } } }
输入完成后,我们点击运行按钮,输出了最终的运行结果,如下图所示:
我们看到,我们使用 DSL 全文搜索了 name 字段,只要 name 字段包含 tools 或者是 server 的都被返回了。
我们在使用 Elasticsearch 的 DSL 进行搜索时,还可以使用全文检索,全文检索会将输入的搜索串拆解开来,去倒排索引里面去一一匹配,只要能匹配上任意一个拆解后的单词,就可以作为结果返回。