javascript - ElasticSearch.js 搜索查询返回 0 个匹配项,但生成的 URL 包含正确的匹配项

标签 javascript elasticsearch elasticsearch.js

我目前正在用 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":[...]}
    }

我完全不知道发生了什么,也不知道如何解决。有人有想法吗?

最佳答案

在我的例子中,我有一个测试脚本,它使用 bulk api 加载一堆记录,然后查询 ES。外部/手动客户端 (Postman) 一切正常,但 js 客户端没有命中,插入后立即在脚本中调用。

问题在于索引needs to be refreshed使新插入的文档出现在搜索中(IndexUpdateDelete API 也是如此)。

我解决了批量调用后强制刷新的问题。

client.bulk({
  refresh: true, // This is the important part
  body: [
    // Bunch of documents/actions
  ]
}, function (err, resp) {
  // ...
})

关于javascript - ElasticSearch.js 搜索查询返回 0 个匹配项,但生成的 URL 包含正确的匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45063043/

相关文章:

performance - ElasticSearch 检索文档速度缓慢

python - 如何同时过滤多个值?

java - OSX 上的 Elasticsearch——Java

elasticsearch - Elasticsearch节点API的非部分更新

node.js - 如何正确列出 node.js 中的所有 Elasticsearch 索引

javascript - 标签之间的 Safari 14.1 localStorage 未同步

javascript - 无法通过 Javascript 编辑 Iframe 的 'src' 值

javascript - 如何使用 elasticsearch.js 和 Angular 在 Elasticsearch 上搜索嵌套对象

javascript - 无法使用库 https ://github. com/hiddentao/linear-algebra 运行简单示例

javascript - 如何滚动到我的按钮? .scrollTo() 不起作用