elasticsearch在某些时候停止添加文档

时间:2019-06-18 08:28:03

标签: python-3.x elasticsearch

我是Elasticsearch的新手,想为许多句子建立索引以有效地对其进行搜索。 最初,我尝试批量添加索引,但是这对我来说不起作用,所以现在我使用以下(python)代码逐个添加句子:

c = pycurl.Curl()
add_document(c, 'myIndexName', 'someJsonString', 99)

def add_document(c, index_name, js, _id):

    c.setopt(c.POST, 1)
    c.setopt(c.URL, 'localhost:9200/%s/sentence/%i' % (index_name, _id))
    c.setopt(c.POSTFIELDS, json.dumps(js))
    c.perform()

我在增加id的地方,一个json输入字符串的例子是:

{"sentence_id": 2, "article_name": "Kegelschnitt", "paragraph_id": 1, "plaintext": "Ein Kegelschnitt ist der zweidimensionale Sonderfall einer Quadrik .", "postags": "Ein/ART Kegelschnitt/NN ist/VAFIN der/ART zweidimensionale/ADJA Sonderfall/NN einer/ART Quadrik/NE ./$."}

到目前为止一切正常,似乎可以正常工作。我怀疑使它以批量导入的方式工作会更有效率,但是由于这是一次性的过程,因此效率不是我的主要考虑。 我使用此查询(在命令行上)以获取索引概述:

curl 'localhost:9200/_cat/indices?v'

哪个给我(用于相关索引)

health status index             pri rep docs.count docs.deleted store.size pri.store.size 
yellow open   wiki_dump_jan2019   5   1     795502       276551    528.1mb        528.1mb 

类似地,查询:

curl -XGET 'localhost:9200/wiki_dump_jan2019/sentence/_count?pretty' -H 'Content-Type: application/json' -d '{"query": {"match_all": {}}}'

返回

{
  "count" : 795502,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  }
}

告诉我索引中有795.502句话。

我的问题是,我总共进行了超过2300万次插入。我意识到可能会有一些重复的句子,但是对此进行了检查,发现了超过2100万个独特的句子。我的python代码执行得很好,没有错误,我检查了elasticsearch日志,但没有发现任何警报。我不确定从索引中删除docs.delete的数量(276.551,请参见上文),但是我知道这可能与重新索引,重复项有关,并且不一定是问题(在任何情况下,情况下,文档和docs.deleted的总数仍远低于我的句子数)。

我唯一能找到的(接近我的问题)是这篇文章:elasticsearch stops indexing new documents after a while, using Tire,但是以下查询:

curl -XGET 'localhost:9200/_nodes/stats/process?filter_path=**.max_file_descriptors'

返回:

{"nodes":{"hoOAMZoCTkOgirg6_aIkUQ":{"process":{"max_file_descr^Ctors":65536}}}}

因此,据我了解,安装后它默认为最大值,这不应该成为问题。

有人能对此有所了解吗?

更新:好的,我想我是个愚蠢的人。我的问题是我在添加/插入过程中使用了句子ID作为索引ID。这个句子ID来自一个特定的文档,因此索引中文档(句子)的最大nr将是最高的句子ID(数据集中最长的文档显然包含795502个句子)。它只会覆盖每个文档之后的所有条目...对不起,浪费您的时间,如果您阅读本文。不是弹性搜索问题;我的python代码中的错误(上面显示的功能之外)。

0 个答案:

没有答案