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

验证是否启动成功

http://localhost:9200/

三.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

打开页面

http://localhost:5601

五.数据测试

#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的主要内容,如果未能解决你的问题,请参考以下文章

Es 全文 PHP 操作

es在linux命令行直接操作数据

ES搜索引擎基本操作

ES6快速学习

curl快速下载GitHub Repo指定commit的tar.gz

快速掌握ES6的代理和反射