使用JSON文件将自定义“_id”设置为ElasticSearch

svgewumm  于 2022-11-02  发布在  ElasticSearch
关注(0)|答案(1)|浏览(140)

我是ElasticSearch的新手,我需要知道是否可以为我的输入分配一个自定义ID。我使用的是LinkSO数据集。JSON文件应该如下所示:

{"index": {"_id": "11"}}
{"title": "title1", "body": "body1", "answer": "answer1"}
{"index": {"_id": "22"}}
{"title": "title2", "body": "body2", "answer": "answer2"}

我的PUT命令是

PUT /test
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "whitespace",
          "filter": [
            "lowercase",
            "porter_stem"
          ]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "analyzer": "my_analyzer",
        "similarity": "BM25"
      },
      "body": {
        "type": "text",
        "analyzer": "my_analyzer",
        "similarity": "BM25"
      },
      "answer": {
        "type": "text",
        "analyzer": "my_analyzer",
        "similarity": "BM25"
      }
    }
  }
}

我在cmd上使用此命令

curl -s -H "Content-Type: application/json" -XPOST localhost:9200/test/_doc/_bulk --data-binary "@test.json"

当只插入一个json数据如

{"title": "title1", "body": "body1", "answer": "answer1"}

它工作得很好。数据被插入,我得到输出。但每当我试图添加2个数据,如

{"title": "title1", "body": "body1", "answer": "answer1"}
{"title": "title2", "body": "body2", "answer": "answer2"}

json文件显示文件结尾预期错误。当我在json文件上使用add index时也会发生同样的情况。
有人能指导我如何使用它吗?我如何添加“_id”,因为ElasticSearch将自己的id指定为_bulk

i7uaboj4

i7uaboj41#

在您的文件中,您需要有如下数据。要设置id,您需要这一行,{“index”:{"_id”:“11”}}。另一个要点是在文件末尾添加换行符。

{"index": {"_id": "11"}}
{"title": "title1", "body": "body1", "answer": "answer1"}
{"index": {"_id": "22"}}
{"title": "title2", "body": "body2", "answer": "answer2"}
\n

相关问题