执行字符串操作时,无法在elasticsearch中索引文档

时间:2015-10-02 23:12:24

标签: python elasticsearch

我必须索引存储在文件中的elasticsearch中的文档,并且在我对其执行字符串操作时索引文档。 (我必须分割线并单独使用分割)

rec = open(file)

for line in rec:

    val_1 = line.partition(' ')[0].strip()
    val_2 = line.partition(' ')[1].strip()
    #print   str(val_1) + " " + str(val_2)
    es.index(index="test", doc_type="trial", id = val_1, body = val2)

我可以打印此行,但由于某种原因无法对其进行索引。它抛出了以下错误。

  

文件" C:\ Python27 \ lib \ site-packages \ elasticsearch \ client \ utils.py",第69行,> _wrapped return func(* args,params = params,** kwargs )

     

File" C:\ Python27 \ lib \ site-packages \ elasticsearch \ client__init __。py",line> 261,in index _make_path(index,doc_type,id),params = params,body =体)

     

文件" C:\ Python27 \ lib \ site-packages \ elasticsearch \ transport.py",第307行,> perform_request status,headers,data = connection.perform_request(method,url,params ,body,ignore = ignore,timeout = timeout)

如果我在循环中执行这些操作

,则此错误相同
es.index(index = "test", doc_type= "trial", id = line.partition(' ')[0].strip(), body = line.partition(' ')[2].strip())

我是以错误的方式发送参数吗?我应该从哪里开始寻找解决方法。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案:真的是一个愚蠢的错误。 我写的是这个

import itertools
import re

z = None

with open('circletest1.gcode') as input_file:
    for line in itertools.islice(203, None):  # islice to skip the first 203 lines
        if line.startswith("G"):
            z = re.search(r"Z=(\d+)", line).group(1)
        elif line.startswith("A"):
            x, y = re.search(r"X(\d+) Y(\d+)", line).groups()
            print(x, y, z)

我错过的是正确格式化身体。 它应该是

es.index(index="test", doc_type="trial", id = val_1, body = val2)