我在关注this link,尝试在ElasticSearch中进行语义搜索。本教程只使用一个文本字段进行嵌入,这对我来说很有效。但现在我想尝试多个字段进行嵌入,ES-8.7支持。
但问题是当我尝试重新索引时;我可以只给予一个管道的名称,它只指向一个字段。我为多个字段创建了多个管道。我做了重新索引,将文档复制到新的嵌入索引中。下面是代码
embedding_pipeline_names = ["name_pipeline", "description_pipeline"]
embedding_pipeline_names = "name_pipeline" # works fine
elastic_search_client.reindex(
source={"index": root_index_name},
dest={
"index": index_name_with_embedding,
"pipeline": embedding_pipeline_names
},
wait_for_completion=False,
requests_per_second=requests_per_second # for batch request
)
我得到这个错误时,我给予一个数组在管道的关键;如果我只给予一个管道名称,它就能正常工作。
Traceback (most recent call last):
raise HTTP_EXCEPTIONS.get(meta.status, ApiError)(
elasticsearch.BadRequestError: BadRequestError(400, 'x_content_parse_exception', "[1:104] [dest] pipeline doesn't support values of type: START_ARRAY")
1条答案
按热度按时间nnvyjq4y1#
我的方法是错误的。我认为一个管道只能处理一个字段。这就是为什么我为每个字段创建单独的管道。但是ES管道支持管道中的多个处理器,这解决了重新索引期间有许多管道的问题。