这里我们主要是对索引库进行各种查询的操作,所以要提前准备一些数据
POST /leq/goods/3 { "title": "小米手机", "images": "3.jpg", "price": 4299, "stock": 200, "saleable": true, "subTitle": "小米" } POST /leq/goods/2 { "title": "IPhone手机", "images": "2.jpg", "price": 6299, "stock": 200, "saleable": true, "subTitle": "IPhone " } POST /leq/goods/1 { "title": "华为手机", "images": "1.jpg", "price": 5299, "stock": 200, "saleable": true, "subTitle": "华为" }
将这些代码复制到Kibana的控制台上运行即可
基本查询
GET /索引库名/_search { "query": { "查询类型": { "查询条件": "查询条件值" } } }
query代表一个查询对象,里面可以有不同的查询属性
查询类型:例如match_all、match、term、range等。
查询条件:查询条件会根据类型的不同,写法也有差异
1.查询所有(match_all)
2.匹配查询(match) 默认的查询为or的关系
通过operator指定为and的关系
3.词条匹配(term)
4.布尔组合(bool)
5. 范围查询(range) gte大于等于 lte小于等于 gt大于 lt小于
6.模糊查询(fuzzy)
结果过滤
默认情况下,Elasticsearch在搜索的结果中,会把文档中保存在 _source 的所有字段都返回。如果我们只想获取其中的部分字段,我们可以添加 _source 的过滤
1.直接指定字段,也是最常用的
2.指定includes和excludes
includes:指定想要显示的字段
excludes:指定不想要显示的字段
过滤(filter):Elasticsearch使用的查询语言(DSL)拥有一套查询组件,这些组件可以以无限组合的方式进行搭配。这套组件可以在以下两种情况下使用:过滤情况(filtering context)和查询情况(query context),如何选择查询与过滤?通常的规则是,使用查询(query)语句来进行全文搜索或者其它任何需要影响相关性得分的搜索。 除此以外的情况都使用过滤(filters)
条件查询中进行过滤
无查询条件直接过滤