1. RESTful接口URL的格式:
  2. http://localhost:9200/<index>/<type>/[<id>]
  3. 其中indextype是必须提供的。
  4. id是可选的,不提供es会自动生成。
  5. indextype将信息进行分层,利于管理。
  6. index可以理解为数据库;type理解为数据表;id相当于数据库表中记录的主键,是唯一的。
  7.  
  8. #向store索引中添加一些书籍
  9. curl -XPUT 'http://172.16.0.14:9200/store/books/1' -d '{
  10. "title": "Elasticsearch: The Definitive Guide",
  11. "name" : {
  12. "first" : "Zachary",
  13. "last" : "Tong"
  14. },
  15. "publish_date":"2015-02-06",
  16. "price":"49.99"
  17. }'
  18.  
  19. #通过浏览器查询
  20. http://172.16.0.14:9200/store/books/1
  21.  
  22. #在linux中通过curl的方式查询
  23. curl -XGET 'http://172.16.0.14:9200/store/books/1'
  24.  
  25. #在添加一个书的信息
  26. curl -XPUT 'http://172.16.0.14:9200/store/books/2' -d '{
  27. "title": "Elasticsearch Blueprints",
  28. "name" : {
  29. "first" : "Vineeth",
  30. "last" : "Mohan"
  31. },
  32. "publish_date":"2015-06-06",
  33. "price":"35.99"
  34. }'
  35.  
  36. # 通过ID获得文档信息
  37. curl -XGET 'http://172.16.0.14:9200/bookstore/books/1'
  38.  
  39. #在浏览器中查看
  40. http://172.16.0.14:9200/bookstore/books/1
  41.  
  42. # 通过_source获取指定的字段
  43. curl -XGET 'http://172.16.0.14:9200/store/books/1?_source=title'
  44. curl -XGET 'http://172.16.0.14:9200/store/books/1?_source=title,price'
  45. curl -XGET 'http://172.16.0.14:9200/store/books/1?_source'
  46.  
  47. #可以通过覆盖的方式更新
  48. curl -XPUT 'http://172.16.0.14:9200/store/books/1' -d '{
  49. "title": "Elasticsearch: The Definitive Guide",
  50. "name" : {
  51. "first" : "Zachary",
  52. "last" : "Tong"
  53. },
  54. "publish_date":"2016-02-06",
  55. "price":"99.99"
  56. }'
  57.  
  58. # 或者通过 _update API的方式单独更新你想要更新的
  59. curl -XPOST 'http://172.16.0.14:9200/store/books/1/_update' -d '{
  60. "doc": {
  61. "price" : 88.88
  62. }
  63. }'
  64.  
  65. curl -XGET 'http://172.16.0.14:9200/store/books/1'
  66.  
  67. #删除一个文档
  68. curl -XDELETE 'http://172.16.0.14:9200/store/books/1'
  69.  
  70. # 最简单filter查询
  71. # SELECT * FROM books WHERE price = 35.99
  72. # filtered 查询价格是35.99的
  73. curl -XGET 'http://172.16.0.14:9200/store/books/_search' -d '{
  74. "query" : {
  75. "filtered" : {
  76. "query" : {
  77. "match_all" : {}
  78. },
  79. "filter" : {
  80. "term" : {
  81. "price" : 35.99
  82. }
  83. }
  84. }
  85. }
  86. }'
  87.  
  88. #指定多个值
  89. curl -XGET 'http://172.16.0.14:9200/store/books/_search' -d '{
  90. "query" : {
  91. "filtered" : {
  92. "filter" : {
  93. "terms" : {
  94. "price" : [35.99, 99.99]
  95. }
  96. }
  97. }
  98. }
  99. }'
  100.  
  101. # SELECT * FROM books WHERE publish_date = "2015-02-06"
  102. curl -XGET 'http://172.16.0.14:9200/bookstore/books/_search' -d '{
  103. "query" : {
  104. "filtered" : {
  105. "filter" : {
  106. "term" : {
  107. "publish_date" : "2015-02-06"
  108. }
  109. }
  110. }
  111. }
  112. }'
  113.  
  114. # bool过滤查询,可以做组合过滤查询
  115. # SELECT * FROM books WHERE (price = 35.99 OR price = 99.99) AND (publish_date != "2016-02-06")
  116. # 类似的,Elasticsearch也有 and, or, not这样的组合条件的查询方式
  117. # 格式如下:
  118. # {
  119. # "bool" : {
  120. # "must" : [],
  121. # "should" : [],
  122. # "must_not" : [],
  123. # }
  124. # }
  125. #
  126. # must: 条件必须满足,相当于 and
  127. # should: 条件可以满足也可以不满足,相当于 or
  128. # must_not: 条件不需要满足,相当于 not
  129.  
  130. curl -XGET 'http://172.16.0.14:9200/bookstore/books/_search' -d '{
  131. "query" : {
  132. "filtered" : {
  133. "filter" : {
  134. "bool" : {
  135. "should" : [
  136. { "term" : {"price" : 35.99}},
  137. { "term" : {"price" : 99.99}}
  138. ],
  139. "must_not" : {
  140. "term" : {"publish_date" : "2016-02-06"}
  141. }
  142. }
  143. }
  144. }
  145. }
  146. }'
  147.  
  148. # 嵌套查询
  149. # SELECT * FROM books WHERE price = 35.99 OR ( publish_date = "2016-02-06" AND price = 99.99 )
  150.  
  151. curl -XGET 'http://172.16.0.14:9200/bookstore/books/_search' -d '{
  152. "query" : {
  153. "filtered" : {
  154. "filter" : {
  155. "bool" : {
  156. "should" : [
  157. { "term" : {"price" : 35.99}},
  158. { "bool" : {
  159. "must" : [
  160. {"term" : {"publish_date" : "2016-02-06"}},
  161. {"term" : {"price" : 99.99}}
  162. ]
  163. }}
  164. ]
  165. }
  166. }
  167. }
  168. }
  169. }'
  170.  
  171. # range范围过滤
  172. # SELECT * FROM books WHERE price >= 20 AND price < 100
  173. # gt : > 大于
  174. # lt : < 小于
  175. # gte : >= 大于等于
  176. # lte : <= 小于等于
  177.  
  178. curl -XGET 'http://172.16.0.14:9200/store/books/_search' -d '{
  179. "query" : {
  180. "filtered" : {
  181. "filter" : {
  182. "range" : {
  183. "price" : {
  184. "gt" : 20.0,
  185. "lt" : 100
  186. }
  187. }
  188. }
  189. }
  190. }
  191. }'
  192.  
  193. # 另外一种 and, or, not查询
  194. # 没有bool, 直接使用and , or , not
  195. # 注意: 不带bool的这种查询不能利用缓存
  196. # 查询价格既是35.99,publish_date又为"2015-02-06"的结果
  197. curl -XGET 'http://172.16.0.14:9200/bookstore/books/_search' -d '{
  198. "query": {
  199. "filtered": {
  200. "filter": {
  201. "and": [
  202. {
  203. "term": {
  204. "price":59.99
  205. }
  206. },
  207. {
  208. "term": {
  209. "publish_date":"2015-02-06"
  210. }
  211. }
  212. ]
  213. },
  214. "query": {
  215. "match_all": {}
  216. }
  217. }
  218. }
  219. }'

Elasticsearch使用filter进行匹配关系and,or,not,range查询的更多相关文章

  1. Elasticsearch过滤器——filter

    Elasticsearch中的所有的查询都会触发相关度得分的计算.对于那些我们不需要相关度得分的场景下,Elasticsearch以过滤器的形式提供了另一种查询功能.过滤器在概念上类似于查询,但是它们 ...

  2. Spring Cloud与Spring Boot版本匹配关系

    Spring Cloud是什么? “Spring Cloud provides tools for developers to quickly build some of the common pat ...

  3. 【Spring Cloud】与Spring Boot版本匹配关系

    Spring Cloud版本演进情况如下: 版本名称 版本Finchley snapshot版Edgware snapshot版Dalston SR1 当前最新稳定版本Camden SR7 稳定版本B ...

  4. Python之路第十三天,高级(7)-详述数据库一对多,多对多表关系的设计以及如何查询

    一对多表设计和查询方法 #!/usr/bin/env python3 # Author: Zhangxunan from sqlalchemy import create_engine from sq ...

  5. Elasticsearch 之 Filter 与 Query 有啥不同?

    今天来了解下 Elasticsearch(以下简称 ES) 中的 Query 和 Filter. 在 ES 中,提供了 Query 和 Filter 两种搜索: Query Context:会对搜索进 ...

  6. [Elasticsearch] 邻近匹配 (三) - 性能,关联单词查询以及Shingles

    提高性能 短语和邻近度查询比简单的match查询在性能上更昂贵.match查询仅仅是查看词条是否存在于倒排索引(Inverted Index)中,而match_phrase查询则须要计算和比較多个可能 ...

  7. ES之六:ElasticSearch中Filter和Query的异同

    如下例子,查找性别是女,所在的州是PA,过滤条件是年龄是39岁,balance大于等于10000的文档: { "query": { "bool": { &quo ...

  8. elasticsearch中filter执行原理深度剖析(bitset机制与caching机制)

    (1)在倒排索引中查找搜索串,获取document list date来举例 word doc1 doc2 doc3 2017-01-01 * *2017-02-02  *   *2017-03-03 ...

  9. ElasticSearch中Filter和Query的异同

    如下例子,查找性别是女,所在的州是PA,过滤条件是年龄是39岁,balance大于等于10000的文档: { "query": { "bool": { &quo ...

随机推荐

  1. MySQL处理表字段小技巧

    MySQL利用正则函数替换值 update dateTest set date=REPLACE(date,'/','') where date REGEXP '\/'; SQL语句讲解: -- 将 所 ...

  2. IE上如何设置input type=file的光标不闪烁

    我们使用文件上传时,时常自定义图标,这时候通常会把input的透明度设置为0,但是在IE上使用时会出现光标闪烁问题 解决办法 css设置font-size为0

  3. 15-BOM

    BOM的介绍 JavaScript基础分为三个部分: ECMAScript:JavaScript的语法标准.包括变量.表达式.运算符.函数.if语句.for语句等. DOM:文档对象模型,操作网页上的 ...

  4. C#读取配置文件app.config

    应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的.它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序.配置文件的根节点是configuration. ...

  5. noip第28课作业

    分段数列 [问题描述] 对于给定的一个长度为N的正整数数列A[i],现要将其分成连续的若干段,并且每段和不超过M(可以等于M),问最少能将其分成多少段使得满足要求. 输入格式: 输入第1行包含两个正整 ...

  6. mod与%的区别

    mod与%的区别 %与mod的区别: %出来的数有正有负,符号取决于左操作数,而mod只能是正: 所以要用%来计算mod的话就要用这样的公式:a mod b = (a % b + b) % b: 括号 ...

  7. CentOS 6.5 伪分布安装

    CentOS 6.5 伪分布安装 软件准备  jdk-6u24-linux-i586.bin .hadoop-1.2.1.tar.gz.hadoop-eclipse-plugin-1.2.1.jar ...

  8. poj 1837 01背包

    Balance Time Limit: 1000 MS Memory Limit: 30000 KB 64-bit integer IO format: %I64d , %I64u Java clas ...

  9. wpf 的依赖属性只能在loaded 事件之后才能取到

    wpf 的依赖属性只能在loaded 事件之后才能取到,在构造函数的  InitializeComponent(); 之后取不到 wpf 的依赖属性只能在loaded 事件之后才能取到,在构造函数的  ...

  10. WPF TreeView BringIntoViewBehavior

    由于项目需要,需要能够定位TreeView中的点,TreeView的节点数过多的情况下,即使找到了对应的节点并选中展示了,由于不在可视区域内,给用户的感觉还是不好,因此设计如下的Behavior,来实 ...