如何从elasticsearch中过滤数据

时间:2017-01-23 06:15:43

标签: elasticsearch

我在elasticsearch中创建了几个索引。 http://localhost:9200/_cat/indices?v的结果表示如下。

health status index                                        pri rep docs.count docs.deleted store.size pri.store.size 
yellow open   idx_post:user:5881bc8eb46a870d958d007a         5   1          6            0     31.3kb         31.3kb 
yellow open   idx_usr                                        5   1          2            0     14.8kb         14.8kb 
yellow open   idx_post:group:587dc2b57a8bee13bdab6592        5   1          1            0      6.1kb          6.1kb

我是elasticsearch的新手,我尝试使用索引idx_usr来过滤数据。

http://localhost:9200/idx_usr/_search?pretty=1

它正常工作并返回预期值。但是当我尝试使用索引idx_post来获取数据时,它会返回一个错误,指出找不到索引。

http://localhost:9200/idx_post/_search?pretty=1

这给出了结果:

{
  "error" : "IndexMissingException[[idx_post] missing]",
  "status" : 404
}

如果有人能够找出原因。我真的很感激。

更新::

这是我如何创建索引。假设存在对象调用数据。我正在使用ES客户端呼叫this.esClient

    var _esData = {
        index: "idx_post:group"+data.group_id;
        type:'posts',
        id:data.post_id.toString() 
    };

    _esData['body'] = data;
    this.esClient.index(_esData, function (error, response) {
        if(error)
            console.log(error);
        callBack(response);
    });

2 个答案:

答案 0 :(得分:3)

您可以通过使用通配符

查询索引来获得所需的结果
http://localhost:9200/idx_post*/_search?pretty=1
                              ^
                              |
                           add this

答案 1 :(得分:1)

因为索引不存在

{
  "error" : "IndexMissingException[[idx_post] missing]",
  "status" : 404
}

您尝试在idx_post中进行搜索,而 _cat 会返回名称idx_post:user:5881bc8eb46a870d958d007aidx_post:group:587dc2b57a8bee13bdab6592