当我们对文档进行了一些简单的增删改查操作了之后,我们就需要进行一些复杂的查询了,因为在我们系统设计的时候使用到的查询语句永远是最多的,本节我们就来看一下如何对文档进行一些比较复杂的查询。
一.条件查询
在所有的查询中,条件查询是必不可少的,当我们使用条件查询时,可以使用两张查询方式,一种就是直接在URI请求地址中添加参数,还有一种就是将参数以Json形式放在请求体中进行传递。下面我们来看一下这两种查询方式。
前提:我们现在在school索引下有四个文档,分别是1001:上海理工,1002:上海财经,1003:复旦大学,1004:交通大学
那我们现在要查id为1001的文档,应该怎么查呢?
方法一:在URI请求地址中添加参数:http://localhost:9200/school/_search?q=city:上海
这里的q代表的是我要进行条件查询操作,后面的参数用xxx:xxx的形式体现
(由于内容过多,截图只显示部分内容…)
方法二:在请求体中添加参数
我们可以看到,在Json格式中query代表这是一个查询操作,match代表这是匹配查询,match内部表示的是想要查询的参数,ok当我们完成了条件查询之后,其实我们的全查询也可以用这种方式去查询,同样的URI地址,我们只需要变一下Json格式中的内容就可以了。
此时我们会发现全查询的时候会查询到很多数据,这些数据全部显示的话会显得回传数据十分臃肿,并且在_source中会有很多数据,如果我们只想要其中的某一个数据应该怎么办呢?这个时候我们的分页查询就显得至关重要。
二.分页查询&排序查询
分页查询的话主要有两个参数,一个是from:代表的是当前页,一个是size:代表的是每一页的查询条数,那我们现在如果想查询第一页的两条数据,就可以用”from”:0,”size”:2这种方式来查询,这样的回显数据只会是前两条数据。
我们来看一下,这里的sort表示的是以id的序号升序显示(排序查询),这里的_source代表每个文档只显示school信息,我们可以通过最后的结果发现在这一次查询中指挥显示id为1001和id为1002的school名信息,并且顺序是按照升序排列的。