当你拥有它的时候如何得到某些东西的信息" _id"已存在于Elasticsearch中的字段

时间:2017-03-23 19:32:42

标签: http curl elasticsearch logstash

所以当我已经拥有它的唯一ID时,我试图能够访问elasticsearch中的对象信息。这是我当前的查询:

curl -XGET 'localhost:9200/packetbeat-2017.03.23/AVr8l8YfyH-VqZ9J_0HZ?pretty'

这是我从中获得的回应:

{
  "error" : {
"root_cause" : [
  {
    "type" : "illegal_argument_exception",
    "reason" : "No endpoint or operation is available at [AVr8l8YfyH-VqZ9J_0HZ]"
  }
],
   "type" : "illegal_argument_exception",
   "reason" : "No endpoint or operation is available at [AVr8l8YfyH-VqZ9J_0HZ]"
},
   "status" : 400
}

我知道这个索引和这个ID都存在,关于如何做到的任何想法?

2 个答案:

答案 0 :(得分:1)

您的请求中缺少_type。所以你想要的是......

curl -XGET 'localhost:9200/packetbeat-2017.03.23/{_type}/AVr8l8YfyH-VqZ9J_0HZ?pretty'

,更一般地说

curl -XGET 'localhost:9200/index/type/id'

答案 1 :(得分:0)

您在查询中遗漏了_type

ElasticSearch中的索引就像一个数据库。而Type类似于表格,ES中的文档就像表格中的记录。 想象一下,你试图从数据库中检索一条记录,而没有指定你需要记录的表。这就是现在发生的事情。

因此,您的查询应为curl -XGET 'localhost:9200/packetbeat-2017.03.23/yourindextypename/AVr8l8YfyH-VqZ9J_0HZ?pretty'

但是,在ES中,您也可以像下面一样查询, curl -XGET 'localhost:9200/packetbeat-2017.03.23/_search {"query":{"term":{"_id":{"value":"AVr8l8YfyH-VqZ9J_0HZ"}}}}'

我建议安装Kibana和Sense,以便您可以使用Sense UI进行查询,以便轻松排除故障。

kibana- 4.6.3 [摘自https://www.elastic.co/jp/downloads/kibana]

Sense(kibana app)[https://www.elastic.co/guide/en/sense/current/installing.html]

After having Kibana installed, access Sense UI

Kibana: http://localhost:5601/

Sense: http://localhost:5601/app/sense