elasticsearch,Node.js,elasticsearch" /> elasticsearch,Node.js,elasticsearch" />

Node.js elasticsearch节点客户端在索引别名上使用mget带回不在别名中的文档

Node.js elasticsearch节点客户端在索引别名上使用mget带回不在别名中的文档,node.js,elasticsearch,Node.js,elasticsearch,我正在使用node js客户端进行ES 我正在做一个mget,但对索引字段使用别名,而不是实际的索引。 它的工作原理是返回结果,但其中一个文档不在别名中,而是在基础索引中,即它应通过别名测试,因此不会返回结果,但它确实存在 itemIds = ['3504479-4-41','3504700-4-41'];//test, second id is not in alias esClient.mget({ index: 'live_articles', _source: ['i

我正在使用node js客户端进行ES

我正在做一个mget,但对索引字段使用别名,而不是实际的索引。 它的工作原理是返回结果,但其中一个文档不在别名中,而是在基础索引中,即它应通过别名测试,因此不会返回结果,但它确实存在

itemIds = ['3504479-4-41','3504700-4-41'];//test, second id is not in alias
esClient.mget({
     index: 'live_articles',
     _source: ['id','itemTypeId','headline','itemUrl','startDate','summary', 'onlineStatus'],
            body: {ids: itemIds}
        }, function (err, resp) {
            var items = [];
            console.log(resp.docs);
        });

此用法实例中的mget是否忽略别名的条件而仅使用别名获取索引?

恐怕您遇到了以下问题:

别名可以包含一个过滤器,该过滤器将用于过滤搜索结果,就像默认过滤器一样。棘手的部分是当您使用get api(或multi_get)时,因为它意味着实时且不执行搜索,而只执行get by id,如果文档在lucene索引中还不可搜索(如果还没有刷新),也可以对事务日志执行此操作。这意味着在这种情况下,过滤器将被忽略,因为使用过滤器意味着执行搜索,这将导致您失去get API的实时性