【问题标题】:Elastic Search weird behavior - some api call do not get invoked弹性搜索奇怪的行为 - 一些 api 调用没有被调用
【发布时间】:2019-07-15 01:28:48
【问题描述】:

我正在使用python-dsl 客户端运行弹性搜索的本地实例。

某些呼叫似乎无法正常工作。

Hee 是一个可快速运行的示例


import time

import elasticsearch_dsl
from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search

e = Elasticsearch()

q = {"hello": "world"}
for i in range(3):
    e.index("wtf", q)
s: Search = Search(using=e, index="wtf").query("match_all")
for i in s:
    print(i.to_dict())
s: Search = Search(using=e, index="wtf").query("match_all").delete()

我希望索引wtf 中的所有文档都被删除(因为这是最后一个查询)。但是当我去http://localhost:9200/wtf/_search?pretty=true&q=:,

它向我显示了三个 json blob...大概是因为 delete() 调用根本没有运行。

但是:

如果我在index() and delete() 调用之间穿插time.sleep(3),我会得到预期的输出:没有json blobs

这是怎么回事?

我正在本地运行 elasticsearch-6.5.0. 的二进制文件

【问题讨论】:

    标签: python-3.x elasticsearch


    【解决方案1】:

    这与 ES 的 near-realtime 属性有关。

    https://docs.genesys.com/Documentation/UCS/9.1.x/Admin/Elasticsearch

    TLDR:将数据写入磁盘很昂贵,因此它会写入段。弹性搜索需要一段时间来更新所有分片以具有相同的段副本,因此您已显式调用 refresh 端点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 2012-02-03
      • 1970-01-01
      相关资源
      最近更新 更多