elasticsearch 如何在Elastic Search中重新索引/创建索引时使用多个管道

cidc1ykv  于 2023-04-20  发布在  ElasticSearch
关注(0)|答案(1)|浏览(205)

我在关注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")
nnvyjq4y

nnvyjq4y1#

我的方法是错误的。我认为一个管道只能处理一个字段。这就是为什么我为每个字段创建单独的管道。但是ES管道支持管道中的多个处理器,这解决了重新索引期间有许多管道的问题。

相关问题