CURL 快速操作ES
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CURL 快速操作ES相关的知识,希望对你有一定的参考价值。
参考技术A ?后面的是可选参数curl -X GET "localhost:9200/_cat/health?v"
curl -X GET "localhost:9200/_cat/indices?v"
curl -X PUT "localhost:9200/customer?pretty"
curl -X DELETE "localhost:9200/customer?pretty"
curl -X PUT "localhost:9200/customer/_doc/1?pretty" -H 'Content-Type: application/json' -d'
"name": "John Doe"
'
curl -X GET "localhost:9200/customer/_doc/1?pretty"
curl -X POST "localhost:9200/customer/_doc/1/_update?pretty" -H 'Content-Type: application/json' -d'
"doc": "name": "Jane Doe"
'
curl -X POST "localhost:9200/customer/_doc/1/_update?pretty" -H 'Content-Type: application/json' -d'
"doc": "name": "Jane Doe", "age": 20
'
curl -X POST "localhost:9200/customer/_doc/1/_update?pretty" -H 'Content-Type: application/json' -d'
"script" : "ctx._source.age += 5"
'
curl -X DELETE "localhost:9200/customer/_doc/2?pretty"
curl -X POST "localhost:9200/customer/_doc/_bulk?pretty" -H 'Content-Type: application/json' -d'
"index":"_id":"1"
"name": "John Doe"
"index":"_id":"2"
"name": "Jane Doe"
'
curl -X POST "localhost:9200/customer/_doc/_bulk?pretty" -H 'Content-Type: application/json' -d'
"update":"_id":"1"
"doc": "name": "John Doe becomes Jane Doe"
"delete":"_id":"2"
'
curl -H "Content-Type: application/json" -XPOST "localhost:9200/bank/_doc/_bulk?pretty&refresh" --data-binary "@accounts.json"
样例数据
kibana操作elasticsearch快速上手
es在windows上安装注意kibana与elasticsearch与ik分词器版本号保持一致(6.6.0版本)
ES下载地址:Past Releases of Elastic Stack Software | Elastic
IK分词器下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
kibana下载地址:https://www.elastic.co/cn/downloads/past-releases/#kibana
一.es整合ik
将es压缩包解压,在es的D:\\environments\\elasticsearch-6.6.0\\plugins路径下新建文件夹ik,将ik分词器解压到es中ik目录下.
二.启动es
双击D:\\environments\\elasticsearch-6.6.0\\bin下的elasticsearch.bat
验证是否启动成功
三.kibana连接es
在D:\\environments\\kibana-6.6.0-windows-x86_64\\config中的kibana.yml中添加
server.port: 5601 server.host: "localhost" elasticsearch.url: "http://127.0.0.1:9200" kibana.index: ".kibana"
四.启动kibana
双击D:\\environments\\kibana-6.6.0-windows-x86_64\\bin中kibana.bat
打开页面
五.数据测试
#1.开始创建Document
PUT /ecommerce/product/1
"name" : "gaolujie yagao",
"desc" : "gaoxiao meibai",
"price" : 30,
"producer" : "gaolujie producer",
"tags": [ "meibai", "fangzhu" ]
PUT /ecommerce/product/2
"name" : "jiajieshi yagao",
"desc" : "youxiao fangzhu",
"price" : 25,
"producer" : "jiajieshi producer",
"tags": [ "fangzhu" ]
PUT /ecommerce/product/3
"name" : "zhonghua yagao",
"desc" : "caoben zhiwu",
"price" : 40,
"producer" : "zhonghua producer",
"tags": [ "qingxin" ]
#2.查询
GET /ecommerce/product/2
#3.覆盖,替换文档(全量替换)
PUT /ecommerce/product/1
"name" : "jiaqiangban gaolujie yagao",
"desc" : "gaoxiao meibai",
"price" : 30,
"producer" : "gaolujie producer",
"tags" : [ "meibai" , "fangzhu" ]
#注意:1.document是不可变的,如果要修改document的内容,可以通过全量替换,直接对document重新建立索引,替换里面所有的内容。2.es会将老的document标记为deleted(逻辑删除),然后新增我们给定的一个document,当我们创建越来越多的document的时候,es会在适当的时机在后台自动删除(物理删除)标记为deleted的document。3`替换必须带上所有的field,否则其他数据会丢失。
#4.修改(更新文档)
POST /ecommerce/product/1/_update
"doc" :
"name" : "jiaqianban gaolujie yagao1"
#5.删除文档
DELETE /ecommerce/product/2
#注意:在删除一个document之后,我们可以从侧面证明,它不是立即物理删除的,因为它的一些版本号信息还是保留的
#6.使用query DSL 请求查询
GET /ecommerce/product/_search
"query" :
"match_all" :
#6.1查询名称包含yaogao的商品,同时按照价格降序排列
GET /ecommerce/product/_search
"query" :
"match" :
"name" : "yagao"
,
"sort" : [
"price" : "desc"
]
#6.2分页查询
#总共3条商品,假设每页就显示1条商品,from是页码
GET /ecommerce/product/_search
"query" : "match_all" : ,
"from" : 0,
"size" : 1
#6.3指定查询项
GET /ecommerce/product/_search
"query" : "match_all" : ,
"_source" : ["name", "price"]
#6.4过滤查询
#搜索商品名称包含yaogao,而且售价大于35元的商品
GET /ecommerce/product/_search
"query" :
"bool" :
"must" :
"match" :
"name" : "yagao"
,
"filter" :
"range" :
"price": "gt" : 35
#7.full-text search(全文检索)
GET /ecommerce/product/_search
"query" :
"match" :
"producer": "yagao producer"
#8.phrase search(短语搜索)
GET /ecommerce/product/_search
"query" :
"match_phrase" :
"producer" : "yagao producer"
#9.多条件查询
#名字中有"yagao",描述上可以有fangzhu也可以没有,价格不能是25元
GET /ecommerce/_search
"query" :
"bool" :
"must" : [
"match" :
"name" : "yagao"
],
"should" : [
"match" :
"desc" : "fangzhu"
,
"match" :
"desc" : "caoben"
],
"must_not" : [
"match" :
"price" :25
],
"minimum_should_match" : 1
在以上的实例中:
从第六条开始需要做出的补充:
两种请求分类:query string search / query DSL
第一种:
类似搜索全部商品: GET /ecommerce/product/_search (参数直接拼接在请求上,不带json参数的)
query string search的由来,因为search参数都是以http请求的query string来附带的。
搜索商品名称中包含yagao的商品,而且按照售价降序排列:
GET /ecommerce/product/_search?q=name:yagao&sort=price:desc
适用于临时的在命令行使用一些工具,比如curl,快速的发出请求,来检索想要的信息;但是
如果查询请求很复杂,是很难去构建的,所以在生产环境中,几乎很少使用query string search。
第二种:
DSL:Domain Specified Language,特定领域的语言
http request body:请求体,可以用json的格式来构建查询语法,比较方便,可以构建各种复杂的语法,比query string search肯定强大太多了。
full-text search 全文检索)和 phrase search(短语搜索)的区别:
全文检索:会将输入的搜索串拆解开来,去索引里面去一一匹配,只要能匹配任意一个拆解后的单词,就可以作为结果返回。
phrase search: 要求输入的搜索串,必须在指定的字段文本中,完全包含一模一样的,才可以算匹配成功,才能作为结果返回。
多条件查询中的字段描述:
must: 表示一定要满足;
should: 表示可以满足也可以不满足;
must_not: 表示不能满足该条件;
minimum_should_match:1 :表示最小匹配度,可以设置为百分之百,设置了这个值的时候就必须满足should里面的设置了,另外注意这边should里面同一字段设置的多个值,意思是当这个值等于X或者等于Y都成立,务必注意格式。
与mysql之间的对比
与50位技术专家面对面 20年技术见证,附赠技术全景图以上是关于CURL 快速操作ES的主要内容,如果未能解决你的问题,请参考以下文章