当前位置: 首页 > 知识库问答 >
问题:

elasticSearch python API:错误时put_mapping

支洋
2023-03-14

我是elasticsearch的新手,想要使用官方的Python API。我有以下代码:

from elasticsearch import Elasticsearch

es = Elasticsearch(timeout=60)
es.indices.create(index='test')

mapping={
          "mappings": {
            "user": {
              "properties": {
                "name": { "type": "text" },
                "user_name": { "type": "keyword" },
                "email": { "type": "keyword" }
              }
            },
            "tweet": {
              "properties": {
                "content": { "type": "text" },
                "user_name": { "type": "keyword" },
                "tweeted_at": { "type": "date" }
              }
            }
          }
        }
es.indices.put_mapping(index='test',body=mapping)

然而,我得到了以下错误:

RequestError:RequestError(400,'mapper_parsing_exception',根映射定义有不支持的参数:[映射:{tweet={properties={tweeted_at={type=date},user_name={type=keyword},content={type=text}},user={properties={user_name={type=keyword},name={type=text},email={type=keyword key}}]

此映射复制自:https://www.elastic.co/guide/en/elasticsearch/reference/current/removal-of-types.html

谁能帮我弄清楚这里出了什么问题吗?

非常感谢

共有1个答案

充高扬
2023-03-14

错误是告诉您您正在使用的映射格式有问题。

怎么了?

  1. 该格式对ES 7. x无效(无类型API:您不应该在映射中指定任何doc类型)
  2. 此映射定义了自ES 6.0以来不支持的两种类型的文档

如果您正在使用ES 7(查看错误消息时,情况似乎是这样),您应该使用以下映射:

PUT twitter
{
  "mappings": {
    "properties": {
      "type": { "type": "keyword" }, 
      "name": { "type": "text" },
      "user_name": { "type": "keyword" },
      "email": { "type": "keyword" },
      "content": { "type": "text" },
      "tweeted_at": { "type": "date" }
    }
  }
}

或者使用两个不同的索引,一个用于用户,另一个用于推文。

PUT user
{
  "mappings": {
    "properties": {
      "name": { "type": "text" },
      "user_name": { "type": "keyword" },
      "email": { "type": "keyword" }
    }
  }
}
PUT tweet
{
  "mappings": {
    "properties": {
      "user_name": { "type": "keyword" },
      "content": { "type": "text" },
      "tweeted_at": { "type": "date" }
    }
  }
}
 类似资料:
  • 问题内容: 我在ubuntu上使用npm v1.0.104 / node 0.6.12-在尝试通过npm安装任何新模块时收到以下复制的错误(我之前使用http而不是https测试了socket.io,但我想知道是否可以导致npm / unsigned证书出现问题)。一旦npm尝试解析“ https://registry.npmjs.org ” URL,该错误就会弹出。无论如何,我可以忽略该错误,或

  • 我正在跑步: 乌班图 14.04 节点 v0.10.25 国家预防控制与预防机制 v 1.3 通过apt-get安装安装了NPM。当我尝试安装Gulp(请参阅代码片段中的命令)时,我遇到了这些失败。我已经尝试过“npm缓存清理”,添加.npmignore文件并添加包。json文件。到目前为止没有任何效果。 有什么想法吗?

  • 问题内容: 我是mysql和jdbc的新手,但出现此标题错误。我整天都在搜索,找不到适合我的解决方案。 我尝试过的操作:卸载/重新安装mysql,将mysql-connector- java-5.1.25-bin.jar和ojdbc7.jar复制粘贴到与我要运行的.class文件相同的位置,然后将该程序重建在其他目录中,可能还有其他几件事。 我正在使用notepad ++进行编码,并使用Windo

  • 问题内容: 我已经安装了Celery,并且正在尝试使用Celery First Steps Doc 对其进行测试。 我尝试将Redis和RabbitMQ都用作代理和后端,但无法获得结果: 每次,我都会收到此错误: 经纪人部分似乎工作得很好:当我运行这段代码时 我得到了(按预期) [2015-08-04 12:05:44,910:INFO / MainProcess]收到的任务:tasks.add

  • 我正在尝试仅使用本地依赖项编译和运行java grpc客户端,但出现以下错误: 这是我的gradle文件: 程序将编译,但不运行。我已经从protos生成了我的java文件,并验证了我是否使用了正确的protoc和protoc gen grpc java与我正在使用的jar库相对应。非常感谢您的帮助。

  • 我收到一个奇怪的错误。在我初始化总数的线上。如果你有空闲时间帮我,我不明白; 第10行:Char 24:运行时错误:-inf超出了“int”(solution.cpp)类型的可表示值的范围摘要:UndefinedBehaviorSanitizer:undefined behavior prog_joined。cpp:19:24