仅检索_source的内容 - Elasticsearch(Node JS)

时间:2018-03-18 05:28:09

标签: elasticsearch

根据Retrieving a document文档

 GET /website/blog/123/_source

会直接返回_source字段中存储的文档。 我目前正在使用Node JS的快速框架。我应该如何在我的代码中实现这一点?

esClient.search({
        index: "myIndex",
        type: "myType",
        body: {

            "query": {
                "match_all": {}
            },
            "size": 3,
            "from": 1

        }
    }).then(function (resp) {
        var result = resp.hits.hits;
        res.status(200).send({data: {recommendations: result, showItemFrom: showItemFrom}})
    }, function (err) {
        console.trace(err.message)
        res.status(500).send({data: err.message})
    })

我以这种方式得到回应......

[
  "_source":{
             {
                 "id": 1,
                 "title": "Test"
                }
            } 
]

但是,我想这样......

[
   {
      id:1,
      title:"Test"
   }
]

3 个答案:

答案 0 :(得分:2)

我不认为Elasticsearch API有一个方法可以为搜索做这个,Val提到的那个可以工作,但它只能通过它的id直接用于GET文档。

但您可以使用Javascript Array#map()方法映射结果:

var result = resp.hits.hits.map(hit => hit._source);

答案 1 :(得分:0)

之后

index:"myIndex"

添加:

source:true

答案 2 :(得分:0)

您需要拨打getSource() function,如下所示:

esClient.getSource({
    index: "website",
    type: "blog",
    id: "123"
}).then(function (source) {
   // do something with source
}, function (err) {
   // error happened
})