ElasticsearchWarning:[删除类型] 不推荐在文档索引请求中指定类型,请改用无类型端点

Posted

技术标签:

【中文标题】ElasticsearchWarning:[删除类型] 不推荐在文档索引请求中指定类型,请改用无类型端点【英文标题】:ElasticsearchWarning: [types removal] Specifying types in document index requests is deprecated, use the typeless endpoints instead 【发布时间】:2022-01-06 17:28:38 【问题描述】:

我应该在我的脚本中使用什么无类型端点,我想索引给定目录中的 json 文件。遇到一个小错误,搜索了很多但没有任何线索。 完整的错误:

C:\Users\USER\AppData\Local\Programs\Python\Python310\lib\site-packages\elasticsearch\connection\base.py:209: ElasticsearchWarning: [types removal] Specifying types in document index requests is deprecated, use the typeless endpoints instead (/index/_doc/id, /index/_doc, or /index/_create/id).
  warnings.warn(message, category=ElasticsearchWarning)

我的脚本:

import requests, json, os
from elasticsearch import Elasticsearch

#folder containing the json folders of scraped data
directory = '../spider/'

#Elasticsearch instance will listen on port 9200
res = requests.get('http://localhost:9200')
print (res.content)
es = Elasticsearch(['host': 'localhost', 'port': '9200'])

#index value object to iterate over the JSON files
i = 1

#Iterate over each JSON file and load it into Elasticsearch
for filename in os.listdir(directory):
    if filename.endswith(".json"):
        fullpath=os.path.join(directory, filename)
        f = open(fullpath)
        docket_content = f.read()
        # Send the data into es
        es.index(index='myIndex', ignore=400, doc_type='docket', id=i, document=json.loads(docket_content),)
        i = i + 1

这是我第一次尝试 Elasticsearch,我很笨,解决方案已经被应用了。

【问题讨论】:

【参考方案1】:

您需要将doc_type='docket' 更改为doc_type='_doc',它将与您所拥有的一起工作

https://www.elastic.co/guide/en/elasticsearch/reference/7.15/removal-of-types.html 更深入地了解它,这是一种已弃用的方法

【讨论】:

谢谢,它成功了,不再是错误。最后你能告诉我如何从 Kibana 查看索引吗?索引,myIndex 还没有,我不应该可以从那里查看索引吗? 或者至少,我如何确认这个索引是通过 Elasticsearch 上的脚本建立的?

以上是关于ElasticsearchWarning:[删除类型] 不推荐在文档索引请求中指定类型,请改用无类型端点的主要内容,如果未能解决你的问题,请参考以下文章

删除(销毁)属于另一个类对象的类对象

如何删除作为另一个类列表的类属性

删除/取消定义类方法

如何删除类内部类类型的类成员指针

0913 完整修改,删除-实体类-数据操作类

从 Div 中删除所有类