无法找出Elasticsearch Python API中的序列化错误

时间:2018-07-10 19:30:23

标签: elasticsearch serialization elasticsearch-dsl

我的代码显示在下面。

client = Elasticsearch(url, http_auth = (username, password), verify_certs = False, read_timeout=50, terminate_after=25000)

examplename = 'GEOS.fp.asm.inst1_2d_smp_Nx.20180508_1700.V01.nc4'

s = Search(using = client, index = [set_index]).source(['metadata.Filename'])\
.query('match', Filename={examplename})


total = s.count()

错误消息是:

elasticsearch.exceptions.SerializationError: ({'query': {'match': {'Filename': set(['GEOS.fp.asm.inst1_2d_smp_Nx.20180508_1700.V01.nc4'])}}}, TypeError("Unable to serialize set(['GEOS.fp.asm.inst1_2d_smp_Nx.20180508_1700.V01.nc4']) (type: <type 'set'>)",))

通常,我不需要搜索字词即可匹配整个文档。因此,例如,如果文档名为GEOS.fp.asm.inst1_2d_smp_Nx.20180508_1700.V01.nc4,我希望在查询20180508时返回该文档。

1 个答案:

答案 0 :(得分:0)

.query('match', Filename={examplename})中,您传入的是set,该文件不可json序列化。我认为应该只是.query('match', Filename=examplename)。希望这会有所帮助!