gpt4 book ai didi

python - 如何从 Azure 搜索索引导出全部/部分文档

转载 作者:行者123 更新时间:2023-12-03 06:10:51 25 4
gpt4 key购买 nike

我所说的文档,是指 Azure 搜索索引中的每个行项目

我需要经常查看搜索索引中存在的内容,并从那里修改/删除一些行项目。一直在尝试寻找可以帮助我轻松完成此操作的 python 脚本/方法,但似乎没有直接的方法。

询问:我基本上想从已有的搜索索引中导出所有行/某些行(基于可过滤字段上的过滤器)。只是想在 dataframe/json 中可视化索引中的所有内容

我已经看过以下资源:

  1. SearchIndexClient Class documentation - 没有方法可以实现这一点
  2. SearchClient Class documentation - 没有方法可以实现这一点
  3. Export data from an Azure Cognitive Search index - Azure Samples - 不是Python

我已经调查过 this 2019年的答案,但太复杂了:

  1. 它有像facet_value、facet_fields这样的变量。页面大小设置为 1000(这是限制吗?)
  2. 与 Azure 搜索索引将索引中的每一行称为“文档”对象相比,page_size 意味着什么

Stackoverflow 上的任何其他答案都没有真正回答这个问题..

最佳答案

根据提供的信息,要将文档从搜索索引导出到 Dataframe,您可以首先使用 azure.search.documents 库中的 search 方法和 过滤器,然后使用pandas将结果转换为Dataframe。

我创建了一个具有以下架构的索引:

index_definition = {
"name": index_name,
"fields": [
{"name": "id", "type": "Edm.String", "key": True, "searchable": False, "facetable": False, "filterable": False},
{"name": "category", "type": "Edm.String", "searchable": True, "facetable": True, "filterable": True},
{"name": "brand", "type": "Edm.String", "searchable": True, "facetable": True, "filterable": True},
{"name": "price", "type": "Edm.Double", "searchable": False, "facetable": True, "filterable": True},
{"name": "rating", "type": "Edm.Int32", "searchable": False, "facetable": True, "filterable": True}
]
}

已将以下数据上传到索引:

[
{
"id": "1",
"category": "Laptops",
"brand": "Brand A",
"price": "800",
"rating": "4"
},
{
"id": "2",
"category": "Laptops",
"brand": "Brand B",
"price": "1000",
"rating": "5"
},
{
"id": "3",
"category": "Smartphones",
"brand": "Brand C",
"price": "600",
"rating": "4"
}
]

通过下面的代码,我成功地使用搜索结果创建了数据框:

from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient
import pandas as pd

endpoint = f"https://{service_name}.search.windows.net/"
search_client = SearchClient(endpoint=endpoint, index_name=index_name, credential=AzureKeyCredential(api_key))

search_text = "*"
results = search_client.search(search_text=search_text,filter="category eq 'Laptops'" ,include_total_count=True)

df = pd.DataFrame(results)
df

输出: enter image description here带过滤器: enter image description here

由于它是基于搜索结果的数据框,因此我们获得了一些额外的列,可以根据要求将其删除。

回答您的其他问题,

在搜索查询中,要检索的搜索结果数量默认为 50,每页最大限制为 1000

更多详情请查看Search Document (查询参数 -> $top)

关于python - 如何从 Azure 搜索索引导出全部/部分文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76813976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com