es的terms和term_linux


es的terms和term_搜索_02


其实elasticsearch权威指南这本书有点坑,还是建议大家看官网,官网如下图片实例中

es的terms和term_linux_03

可以拷贝为curl,就可以看到他的添加索引数据的命令

es的terms和term_es的terms和term_04

curl -X PUT "localhost:9200/customer/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{
    "first_name" : "John",
    "last_name" :  "Smith",
    "age" :        25,
    "about" :      "I love to go rock climbing",
    "interests": [ "sports", "music" ]
}
'

运行结果如下

es的terms和term_elasticsearch_05

curl -X DELETE "localhost:9200/customer?pretty"
curl -X GET "localhost:9200/_cat/indices?v"

es的terms和term_linux_06


es的terms和term_linux_07

curl -X POST "localhost:9200/customer/_update/1?pretty" -H 'Content-Type: application/json' -d'
{
    "doc":{"first_name" : "Jane"}
}
'
curl -X POST "localhost:9200/customer/_update/1?pretty" -H 'Content-Type: application/json' -d'
{
    "doc":{"first_name" : "Jane","age":20}
}
'
curl -X POST "localhost:9200/customer/_update/1?pretty" -H 'Content-Type: application/json' -d'
{
    "script":"ctx._source.age+=5"                   
}
'

ctx._source指的是讲要更新的当前原文档

es的terms和term_json_08

删除索引为2的文档:

curl -X DELETE "localhost:9200/customer/_doc/2?pretty"

es的terms和term_es的terms和term_09

批量更新:

[hp@localhost ~]$ curl -X POST "localhost:9200/customer/_bulk?pretty" -H 'Content-Type:application/json' -d'
{"index":{"_id":"1"}}
{"name":"John"}
{"index":{"_id":"2"}}
{"name":"Jong"}
'
{
  "took" : 50,
  "errors" : false,
  "items" : [
    {
      "index" : {
        "_index" : "customer",
        "_type" : "_doc",
        "_id" : "1",
        "_version" : 5,
        "result" : "updated",
        "_shards" : {
          "total" : 2,
          "successful" : 1,
          "failed" : 0
        },
        "_seq_no" : 6,
        "_primary_term" : 1,
        "status" : 200
      }
    },
    {
      "index" : {
        "_index" : "customer",
        "_type" : "_doc",
        "_id" : "2",
        "_version" : 1,
        "result" : "created",
        "_shards" : {
          "total" : 2,
          "successful" : 1,
          "failed" : 0
        },
        "_seq_no" : 7,
        "_primary_term" : 1,
        "status" : 201
      }
    }
  ]
}
[hp@localhost ~]$

es的terms和term_elasticsearch_10

[hp@localhost bin]$ curl -X POST "localhost:9200/customer/_bulk?pretty" -H 'Content-Type:application/json' -d'
{"update":{"_id":"1"}}
{"doc":{"name":"John become Jane"}}
{"delete":{"_id":"2"}}
'
{
  "took" : 23,
  "errors" : false,
  "items" : [
    {
      "update" : {
        "_index" : "customer",
        "_type" : "_doc",
        "_id" : "1",
        "_version" : 7,
        "result" : "updated",
        "_shards" : {
          "total" : 2,
          "successful" : 1,
          "failed" : 0
        },
        "_seq_no" : 10,
        "_primary_term" : 2,
        "status" : 200
      }
    },
    {
      "delete" : {
        "_index" : "customer",
        "_type" : "_doc",
        "_id" : "2",
        "_version" : 3,
        "result" : "deleted",
        "_shards" : {
          "total" : 2,
          "successful" : 1,
          "failed" : 0
        },
        "_seq_no" : 11,
        "_primary_term" : 2,
        "status" : 200
      }
    }
  ]
}

es的terms和term_json_11

curl -XPOST "localhost:9200/_doc/brank/1?pretty" -H'Content-Type:application/json' '
{
"account_number": 0,
"balance": 16623,
"firstname": "Bradshaw",
"lastname": "Mckenzie",
"age": 29,
"gender": "F",
"address": "244 Columbns Place",
"employer": "Euron",
"email": "bradshawmckenzie@euron.com",
"city": "Hobucken",
"state": "CO"
}
'

两者的命令一样,但是由于复制粘贴过来的json,导致有未知字符,所以建议不要粘贴json串

curl -X PUT "localhost:9200/brank/_doc/1?pretty" -H 'Content-Type:application/json' -d '
> {
> "account_number": 0,
> "balance": 16623,
> "firstname": "Bradshaw",
> "lastname": "Mckenzie",
> "age": 29,
> "gender": "F",
> "address": "244",
> "employer": "Euron",
> "email": "brandshw@com",
> "city": "Hobocke",
> "state": "CO"
> }'

es的terms和term_搜索_12


在批量添加数据的使用,使用json文件导入出现如下错误

es的terms和term_es的terms和term_13


这是因为自己写的json文件里面的格式不对,所以还是需要官方的文件,

accounts.json

点击下载就可
重新运行命令就成功了

curl -H "Content-Type: application/x-ndjson" -XPOST "localhost:9200/bank/_bulk?pretty&refresh" --data-binary "@accounts.json"

当然如下的命令也可

curl -H "Content-Type: application/json" -XPOST "localhost:9200/bank/_bulk?pretty&refresh" --data-binary "@accounts.json"

es的terms和term_es的terms和term_14

下面来进行简单的类似于get请求,在uri上加参数的搜索

curl -XGET "localhost:9200/bank/_search?q=*&sort=account_number:asc&pretty"

es的terms和term_json_15


解释一下每个参数的含义

bank指的时索引,不用多说

q=*,这个指的是es匹配指定索引中的所有文档,

sort=account_number:asc这个意思是按照每个文档的account_number字段按照升序对结果进行排序

第二行,took表示es执行搜索所用的时间,单位是ms

第三行,time_out 用来指示搜索是否超时

第四行,_shards指示搜索了多少分片,以及搜索成功和失败的分片的计数

第十行 hits是用来实际搜索结果集

第十一行,hits.total 是包含与搜索条件匹配的文档总数信息的对象

第十二行 hits.total.value 表示总命中计数的值

缺一个总结:

curl -XGET "localhost:9200/bank/_search?pretty" '
{
"query": {"match_all":{}},
"sort": [
{"account_number":"asc"}
]
}'

es的terms和term_json_16


这里的区别已经很明显了,就是不在uri中拼参数,而是向search API提供一个json风格的查询请求提

很多人开始想要使用postman进行对es请求的时候会出现以下一个问题elastic Error: connect ECONNREFUSED 192.168.109.11:9200

这种情况只可能出现在一个主机向另一个主机上的es发送请求这种情况
我的是win系统向虚拟机上的linux进行请求,win ping的通 linux但是就是无法访问,如上我给出的链接,里面的解决方法我用的是最后一个修改配置的方法,不过没有全改。改动如下

network.host: 192.168.189.129
 http.port: 9200
 node.name: node-1
 node.master: true
 cluster.initial_master_nodes: [“node-1”]

本来host 中localhost就是在linux上就是这个地址,但是你从外界请求可能会有其他状况,port应该不用改,然后后面三个配置的意思是,第三个集群初始就是node-1,第一个node-1就是这个主机,然后第二个,并且这个节点还是主节点,这是在没有配置集群之前只能这么做,所以那些配置了集群的,就不用参考了。应该直接就可以连接上。

这几个配置参考以下文章文章一 参考完这个无法启动文章二

文章二的配置彻底解决了我的问题