我目前正在用JavaScript编写一个网站,用ElasticSearch绘制来自数据的各种字段,我遇到了一个奇怪的问题。(出于各种原因,我不想使用Kibana。)
直到不久前,我在JavaScript中的搜索查询都正确地返回了匹配结果。我没有对其进行任何更改,但是查询突然没有返回任何结果。但是,当我跟随调用生成的URL时,会出现我想要的命中结果。
下面是查询:
client.search({
index: "chamber-data",
type: "Soak1",
size: 1000,
scroll: "30s",
sort: ["_doc"],
_source: ["@timestamp", "datetime", [...this.props.fields]],
body: {
query: {
bool: {
filter: {
range: {
"datetime": {
lte: "now",
gte: "now-12H"
}
}
}
}
}
}
}).then(this.process_promise, this.handle_error);以下是脚本在我的网站控制台中提供给我的内容:
{
"_scroll_id": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAA1NrFlZYTEJLYW12UUFTaWowMllJZVcyalEAAAAAAANTbRZWWExCS2FtdlFBU2lqMDJZSWVXMmpRAAAAAAADU28WVlhMQkthbXZRQVNpajAyWUllVzJqUQAAAAAAA1NsFlZYTEJLYW12UUFTaWowMllJZVcyalEAAAAAAANTbhZWWExCS2FtdlFBU2lqMDJZSWVXMmpR",
"took": 0,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": []
}}
下面是URL给我的信息:
{"_scroll_id":"DnF1ZXJ5VGhlbkZldGNoBQAAAAAAA1N2FlZYTEJLYW12UUFTaWowMllJZVcyalEAAAAAAANTdBZWWExCS2FtdlFBU2lqMDJZSWVXMmpRAAAAAAADU3cWVlhMQkthbXZRQVNpajAyWUllVzJqUQAAAAAAA1NzFlZYTEJLYW12UUFTaWowMllJZVcyalEAAAAAAANTdRZWWExCS2FtdlFBU2lqMDJZSWVXMmpR",
"took":9,
"timed_out":false,
"_shards":{"total":5,"successful":5,"failed":0},
"hits":
{"total":107565,"max_score":null,"hits":[...]}
}我完全不知道发生了什么,我也不知道如何解决它。有人有什么想法吗?
发布于 2017-11-01 02:32:24
在我的例子中,我有一个测试脚本,它使用bulk应用程序接口加载一系列记录,并在此之后立即查询ES。对于外部/手动客户端(Postman),一切正常,但对于js客户端,则没有命中,在插入之后的脚本中调用。
问题在于,新插入文档的索引needs to be refreshed将出现在搜索中( Index、Update和Delete API也是如此)。
我解决了批量调用后强制刷新的问题。
client.bulk({
refresh: true, // This is the important part
body: [
// Bunch of documents/actions
]
}, function (err, resp) {
// ...
})https://stackoverflow.com/questions/45063043
复制相似问题