我使用olivere elastic library连接松紧带。 所以我有一个客户端,与其连接,添加一些文档。 然后,我有另一个进行搜索的客户端。但是我必须等待大约几秒钟,因为立即响应为空
_, err := client.Index().
Index(elasticTemplateName).
Type(elasticType).
Id(myID).
BodyJson(myJson).
Do(ctx)
require.NoError(t, err)
// wait cause of async elastic client
time.Sleep(1000 * time.Millisecond)
result, err := anotherClient.Search().Index(IndexName).SearchSource(searchSource).Do(ctx)
另一个客户:
client, err := elastic.NewClient(
elastic.SetURL(
conf.Hosts...
),
elastic.SetSniff(false),
)
答案 0 :(得分:2)
您可能要使用Refresh API,请参见https://github.com/olivere/elastic/blob/release-branch.v6/indices_refresh.go
插入是实时的,但get使用的索引不是
答案 1 :(得分:1)
您可以:
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-refresh.html
答案 2 :(得分:1)
这与ES行为有关,与GO客户端无关。
ES不会立即将文档添加到索引中(如果我没有记错的话,默认值为每1秒一次)。您可以提高ES中的索引率,这对开发有利,但在生产中以及ES上的高负载可能会导致性能下降。
它称为refresh_interval,您可以在the documentation
中了解更多信息。