这批文章我们介绍下query_string这个查询。这是一个非常有意思的查询,他会在所有的字段里面进行查询,同时在查询的时候也会对关键词进行分词。
在前面的预留字段里面我们可以看到有一个_all的预留字段,elasticsearch会把所有索引的字段都放在这个字段里面一遍,在使用query_string的时候他是在_all字段里面进行查询。所以使用query_string查询有如下特点:
1、不需要指定在哪个字段里面进行查询,他会在所有的字段里面进行查询。 2、query_string查询的时候,关键词也会被分词。
下面我们还是使用上一篇的test索引进行查询
一、查看下test索引的数据
可以看到索引了两条数据。
二、使用query_string进行查询
post /test/_search { "query": { "query_string": { "query": "中华人民共和国" } } }
从上图我们看到查询出来了结果。和前面介绍的是一样的
1、在查询的时候,我们没有指定查询name字段,这边在查询的时候会把结果查询出来。 2、在查询的时候关键词进行了分词,因为我们查询中华人民共和国的时候,中华也被查询出来了。
备注:
1、query_string查询看起来非常的强大,但是同时也会导致安全性问题,因为直接在关键词里面组合查询,可以把整个elasticsearch的信息都能查询出来。
2、不建议在生产环境特别是对外暴露搜索的场景里面使用query_string。
还没有评论,来说两句吧...