node.js - 索引新文档并在同一查询中获取索引文档

标签 node.js elasticsearch elasticsearch-query

是否可以为新文档建立索引并在他成功建立索引后将其归还?

我试图使用返回的_id,但是我正在使用2个查询,而index操作则需要一些时间,而第二个查询找不到_id,因此它并不总是完美地完成它。

这是索引文档的查询:

const query = await elsaticClient.index({
routing: "dasdsad34_d",
index: "milan",
body: {
  text: "san siro",
  user: {
    user_id: "3",
    username: "maldini",
  },
  tags: ["Forza Milan","grande milan"],
  publish_date: new Date(),
  likes: [],
  users_tags: [1,5],
  type: {
    name: "comment",
    parent: "dasdsad34_d",
  },
},

});

最佳答案

不,默认行为无法实现。默认情况下,Elasticsearch仅提供近乎实时的支持。它的默认刷新间隔为1秒,因为索引刷新被认为是一项昂贵的操作。

为了解决这个问题,您可以在索引操作中添加 refresh = true 。您可以从下面的链接中获取更多详细信息。

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-refresh.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html

请注意,这不是,不是推荐的选项,因为这会带来巨大的开销。如果您要插入的索引数量非常少,请仅使用此选项。

推荐的方法是在索引操作中使用 refresh = wait_for 。但这有一个缺点,那就是等待一秒钟自然刷新完成。因此,如果您将默认刷新间隔设置为1,并且可以接受,这是可以接受的折衷方案,那么这就是解决方法。

但是,如果设置了较高的刷新间隔,则索引操作的等待时间将与刷新间隔一样长。因此,请仔细选择您的选项。

关于node.js - 索引新文档并在同一查询中获取索引文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61141202/

相关文章:

elasticsearch - Elasticsearch:无法使用过滤器查询 bool 嵌套查询并进行排序

node.js - Express 和 Redis - 如果该用户存在 session ,则不允许访问

javascript - 如何在 jquery javascript 中从 localstorage 保存和获取表单状态

elasticsearch - 如何在Kibana中显示2项图

ruby-on-rails - ElasticSearch和Tire:如何使用html_strip

elasticsearch - 在Elasticsearch Head Extension中查询Elasticsearch仅返回1个数据

node.js - 这对于调用处理 Sequelize 的方法是否很典型?

node.js - 将 npm 与 node.js Windows 64 位 .exe 版本一起使用

python - django-haystack elasticsearch 作为后端和搜索引擎

elasticsearch - 如何在 Elasticsearch 中查询IP范围?