是否可以为新文档建立索引并在他成功建立索引后将其归还?
我尝试使用返回的_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",
},
},
});
答案 0 :(得分:0)
否,默认行为无法实现。默认情况下,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,并且可以接受,这是可以接受的折衷方案,那么这就是方法。
但是,如果设置了较高的刷新间隔,则索引操作的等待时间将与刷新间隔一样长。因此,请仔细选择您的选项。