Elasticsearch使用filter进行匹配关系and,or,not,range查询
- RESTful接口URL的格式:
- http://localhost:9200/<index>/<type>/[<id>]
- 其中index、type是必须提供的。
- id是可选的,不提供es会自动生成。
- index、type将信息进行分层,利于管理。
- index可以理解为数据库;type理解为数据表;id相当于数据库表中记录的主键,是唯一的。
- #向store索引中添加一些书籍
- curl -XPUT 'http://172.16.0.14:9200/store/books/1' -d '{
- "title": "Elasticsearch: The Definitive Guide",
- "name" : {
- "first" : "Zachary",
- "last" : "Tong"
- },
- "publish_date":"2015-02-06",
- "price":"49.99"
- }'
- #通过浏览器查询
- http://172.16.0.14:9200/store/books/1
- #在linux中通过curl的方式查询
- curl -XGET 'http://172.16.0.14:9200/store/books/1'
- #在添加一个书的信息
- curl -XPUT 'http://172.16.0.14:9200/store/books/2' -d '{
- "title": "Elasticsearch Blueprints",
- "name" : {
- "first" : "Vineeth",
- "last" : "Mohan"
- },
- "publish_date":"2015-06-06",
- "price":"35.99"
- }'
- # 通过ID获得文档信息
- curl -XGET 'http://172.16.0.14:9200/bookstore/books/1'
- #在浏览器中查看
- http://172.16.0.14:9200/bookstore/books/1
- # 通过_source获取指定的字段
- curl -XGET 'http://172.16.0.14:9200/store/books/1?_source=title'
- curl -XGET 'http://172.16.0.14:9200/store/books/1?_source=title,price'
- curl -XGET 'http://172.16.0.14:9200/store/books/1?_source'
- #可以通过覆盖的方式更新
- curl -XPUT 'http://172.16.0.14:9200/store/books/1' -d '{
- "title": "Elasticsearch: The Definitive Guide",
- "name" : {
- "first" : "Zachary",
- "last" : "Tong"
- },
- "publish_date":"2016-02-06",
- "price":"99.99"
- }'
- # 或者通过 _update API的方式单独更新你想要更新的
- curl -XPOST 'http://172.16.0.14:9200/store/books/1/_update' -d '{
- "doc": {
- "price" : 88.88
- }
- }'
- curl -XGET 'http://172.16.0.14:9200/store/books/1'
- #删除一个文档
- curl -XDELETE 'http://172.16.0.14:9200/store/books/1'
- # 最简单filter查询
- # SELECT * FROM books WHERE price = 35.99
- # filtered 查询价格是35.99的
- curl -XGET 'http://172.16.0.14:9200/store/books/_search' -d '{
- "query" : {
- "filtered" : {
- "query" : {
- "match_all" : {}
- },
- "filter" : {
- "term" : {
- "price" : 35.99
- }
- }
- }
- }
- }'
- #指定多个值
- curl -XGET 'http://172.16.0.14:9200/store/books/_search' -d '{
- "query" : {
- "filtered" : {
- "filter" : {
- "terms" : {
- "price" : [35.99, 99.99]
- }
- }
- }
- }
- }'
- # SELECT * FROM books WHERE publish_date = "2015-02-06"
- curl -XGET 'http://172.16.0.14:9200/bookstore/books/_search' -d '{
- "query" : {
- "filtered" : {
- "filter" : {
- "term" : {
- "publish_date" : "2015-02-06"
- }
- }
- }
- }
- }'
- # bool过滤查询,可以做组合过滤查询
- # SELECT * FROM books WHERE (price = 35.99 OR price = 99.99) AND (publish_date != "2016-02-06")
- # 类似的,Elasticsearch也有 and, or, not这样的组合条件的查询方式
- # 格式如下:
- # {
- # "bool" : {
- # "must" : [],
- # "should" : [],
- # "must_not" : [],
- # }
- # }
- #
- # must: 条件必须满足,相当于 and
- # should: 条件可以满足也可以不满足,相当于 or
- # must_not: 条件不需要满足,相当于 not
- curl -XGET 'http://172.16.0.14:9200/bookstore/books/_search' -d '{
- "query" : {
- "filtered" : {
- "filter" : {
- "bool" : {
- "should" : [
- { "term" : {"price" : 35.99}},
- { "term" : {"price" : 99.99}}
- ],
- "must_not" : {
- "term" : {"publish_date" : "2016-02-06"}
- }
- }
- }
- }
- }
- }'
- # 嵌套查询
- # SELECT * FROM books WHERE price = 35.99 OR ( publish_date = "2016-02-06" AND price = 99.99 )
- curl -XGET 'http://172.16.0.14:9200/bookstore/books/_search' -d '{
- "query" : {
- "filtered" : {
- "filter" : {
- "bool" : {
- "should" : [
- { "term" : {"price" : 35.99}},
- { "bool" : {
- "must" : [
- {"term" : {"publish_date" : "2016-02-06"}},
- {"term" : {"price" : 99.99}}
- ]
- }}
- ]
- }
- }
- }
- }
- }'
- # range范围过滤
- # SELECT * FROM books WHERE price >= 20 AND price < 100
- # gt : > 大于
- # lt : < 小于
- # gte : >= 大于等于
- # lte : <= 小于等于
- curl -XGET 'http://172.16.0.14:9200/store/books/_search' -d '{
- "query" : {
- "filtered" : {
- "filter" : {
- "range" : {
- "price" : {
- "gt" : 20.0,
- "lt" : 100
- }
- }
- }
- }
- }
- }'
- # 另外一种 and, or, not查询
- # 没有bool, 直接使用and , or , not
- # 注意: 不带bool的这种查询不能利用缓存
- # 查询价格既是35.99,publish_date又为"2015-02-06"的结果
- curl -XGET 'http://172.16.0.14:9200/bookstore/books/_search' -d '{
- "query": {
- "filtered": {
- "filter": {
- "and": [
- {
- "term": {
- "price":59.99
- }
- },
- {
- "term": {
- "publish_date":"2015-02-06"
- }
- }
- ]
- },
- "query": {
- "match_all": {}
- }
- }
- }
- }'
Elasticsearch使用filter进行匹配关系and,or,not,range查询的更多相关文章
- Elasticsearch过滤器——filter
Elasticsearch中的所有的查询都会触发相关度得分的计算.对于那些我们不需要相关度得分的场景下,Elasticsearch以过滤器的形式提供了另一种查询功能.过滤器在概念上类似于查询,但是它们 ...
- Spring Cloud与Spring Boot版本匹配关系
Spring Cloud是什么? “Spring Cloud provides tools for developers to quickly build some of the common pat ...
- 【Spring Cloud】与Spring Boot版本匹配关系
Spring Cloud版本演进情况如下: 版本名称 版本Finchley snapshot版Edgware snapshot版Dalston SR1 当前最新稳定版本Camden SR7 稳定版本B ...
- Python之路第十三天,高级(7)-详述数据库一对多,多对多表关系的设计以及如何查询
一对多表设计和查询方法 #!/usr/bin/env python3 # Author: Zhangxunan from sqlalchemy import create_engine from sq ...
- Elasticsearch 之 Filter 与 Query 有啥不同?
今天来了解下 Elasticsearch(以下简称 ES) 中的 Query 和 Filter. 在 ES 中,提供了 Query 和 Filter 两种搜索: Query Context:会对搜索进 ...
- [Elasticsearch] 邻近匹配 (三) - 性能,关联单词查询以及Shingles
提高性能 短语和邻近度查询比简单的match查询在性能上更昂贵.match查询仅仅是查看词条是否存在于倒排索引(Inverted Index)中,而match_phrase查询则须要计算和比較多个可能 ...
- ES之六:ElasticSearch中Filter和Query的异同
如下例子,查找性别是女,所在的州是PA,过滤条件是年龄是39岁,balance大于等于10000的文档: { "query": { "bool": { &quo ...
- elasticsearch中filter执行原理深度剖析(bitset机制与caching机制)
(1)在倒排索引中查找搜索串,获取document list date来举例 word doc1 doc2 doc3 2017-01-01 * *2017-02-02 * *2017-03-03 ...
- ElasticSearch中Filter和Query的异同
如下例子,查找性别是女,所在的州是PA,过滤条件是年龄是39岁,balance大于等于10000的文档: { "query": { "bool": { &quo ...
随机推荐
- MySQL处理表字段小技巧
MySQL利用正则函数替换值 update dateTest set date=REPLACE(date,'/','') where date REGEXP '\/'; SQL语句讲解: -- 将 所 ...
- IE上如何设置input type=file的光标不闪烁
我们使用文件上传时,时常自定义图标,这时候通常会把input的透明度设置为0,但是在IE上使用时会出现光标闪烁问题 解决办法 css设置font-size为0
- 15-BOM
BOM的介绍 JavaScript基础分为三个部分: ECMAScript:JavaScript的语法标准.包括变量.表达式.运算符.函数.if语句.for语句等. DOM:文档对象模型,操作网页上的 ...
- C#读取配置文件app.config
应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的.它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序.配置文件的根节点是configuration. ...
- noip第28课作业
分段数列 [问题描述] 对于给定的一个长度为N的正整数数列A[i],现要将其分成连续的若干段,并且每段和不超过M(可以等于M),问最少能将其分成多少段使得满足要求. 输入格式: 输入第1行包含两个正整 ...
- mod与%的区别
mod与%的区别 %与mod的区别: %出来的数有正有负,符号取决于左操作数,而mod只能是正: 所以要用%来计算mod的话就要用这样的公式:a mod b = (a % b + b) % b: 括号 ...
- CentOS 6.5 伪分布安装
CentOS 6.5 伪分布安装 软件准备 jdk-6u24-linux-i586.bin .hadoop-1.2.1.tar.gz.hadoop-eclipse-plugin-1.2.1.jar ...
- poj 1837 01背包
Balance Time Limit: 1000 MS Memory Limit: 30000 KB 64-bit integer IO format: %I64d , %I64u Java clas ...
- wpf 的依赖属性只能在loaded 事件之后才能取到
wpf 的依赖属性只能在loaded 事件之后才能取到,在构造函数的 InitializeComponent(); 之后取不到 wpf 的依赖属性只能在loaded 事件之后才能取到,在构造函数的 ...
- WPF TreeView BringIntoViewBehavior
由于项目需要,需要能够定位TreeView中的点,TreeView的节点数过多的情况下,即使找到了对应的节点并选中展示了,由于不在可视区域内,给用户的感觉还是不好,因此设计如下的Behavior,来实 ...