elasticsearch - 在为大型数据建立索引时,如果我再次删除索引ElasticSearch并创建索引并为文档建立索引而不是给Index不存在

标签 elasticsearch nest

我正在按1000个批次索引大型数据。我有100000个文档。在这之间,如果我直接从 Elasticsearch 中删除索引(来自:http://localhost:9200/_plugin/head/),它将重新创建索引并为新文档建立索引,因此旧文档会丢失。如果索引不存在,我需要通过错误。
下面是两个记录的json查询(实际为1000)

{ "index" :  {"_index":"1020","_type":"PROGRAMS","_id":"3149012","_routing":"PROGRAMS"} }
{
  "OBJID": 3149015,
  "MAINTITLE": "SPEAR TALK",
  "A_S_DESC": null,
  "A_S_ORIG_NA": "PFT",
  "EPISODE_NAME": "DEMOPROG",
  "A_S_DURATION": null,
  "A_S_EP_NU": "111",
  "A_S_EP_NA": "DEMOPROG",
  "S_SOM": "10:00:00:00",
  "S_FRAMERAT": 25,
  "A_S_QUALITY": "HD",
  "A_S_TX_TIME": "150200",
  "A_S_TX_DATE": "20150228",
  "TX_DATE_TIME": "20150228150200",
  "REGISTRATION": "20150228",
  "REGISTRATIO2": "150240",
  "REGISTRATION_DATE_TIME": "20150228150240",
  "CreatedOn": "2015-02-28T15:02:40",
  "A_S_VERSION": "MIX",
  "SUG_MAINTITLE": "DEMO PROGRAM 1 EP 111",
  "A_DISPLAY_NA": "DEMO PROGRAM 1",
  "channel": "DEMO-CHANNEL1",
  "CHANNEL_DISPLAY_NA": "DEMO CHANNEL 1",
  "IS_ARCHIVED": "NOT ARCHIVED",
  "IS_TXRC": "TX",
  "OBJECTCLASS": "PROGRAMS",
  "SUB_OBJECTCLASS_FACET": "Assets",
  "OBJECTCLASS_FACET": "Programs",
  "kxjrt94fbr": "kxjrt94fbr",
  "SortOrderValue": "1",
  "VideoURL": null,
  "ThumbURL": null,
  "GENRE": null,
  "S_ArchivedInstanceInfo": null,
  "searchColumn": "SPEAR TALK DEMOPROG DEMO PROGRAM 1",
  "RowNum": 2
}
{ "index" :  {"_index":"1020","_type":"PROGRAMS","_id":"3149015","_routing":"PROGRAMS"} }
{
  "OBJID": 3149015,
  "MAINTITLE": "SPEAR TALK",
  "A_S_DESC": null,
  "A_S_ORIG_NA": "PFT",
  "EPISODE_NAME": "DEMOPROG",
  "A_S_DURATION": null,
  "A_S_EP_NU": "111",
  "A_S_EP_NA": "DEMOPROG",
  "S_SOM": "10:00:00:00",
  "S_FRAMERAT": 25,
  "A_S_QUALITY": "HD",
  "A_S_TX_TIME": "150200",
  "A_S_TX_DATE": "20150228",
  "TX_DATE_TIME": "20150228150200",
  "REGISTRATION": "20150228",
  "REGISTRATIO2": "150240",
  "REGISTRATION_DATE_TIME": "20150228150240",
  "CreatedOn": "2015-02-28T15:02:40",
  "A_S_VERSION": "MIX",
  "SUG_MAINTITLE": "DEMO PROGRAM 1 EP 111",
  "A_DISPLAY_NA": "DEMO PROGRAM 1",
  "channel": "DEMO-CHANNEL1",
  "CHANNEL_DISPLAY_NA": "DEMO CHANNEL 1",
  "IS_ARCHIVED": "NOT ARCHIVED",
  "IS_TXRC": "TX",
  "OBJECTCLASS": "PROGRAMS",
  "SUB_OBJECTCLASS_FACET": "Assets",
  "OBJECTCLASS_FACET": "Programs",
  "kxjrt94fbr": "kxjrt94fbr",
  "SortOrderValue": "1",
  "VideoURL": null,
  "ThumbURL": null,
  "GENRE": null,
  "S_ArchivedInstanceInfo": null,
  "searchColumn": "SPEAR TALK DEMOPROG DEMO PROGRAM 1",
  "RowNum": 2
}

接下来的1000个批次将以相同的方式编制索引。我需要检查索引是否存在吗?还是有什么方法可以从ElasticSearch知道?

最佳答案

Elasticsearch将根据对象的结构自动创建索引,但请记住,任何自定义字段设置都可能无法以这种方式维护。

如果要检查索引是否存在,请使用:

curl -XHEAD -i 'http://localhost:9200/your_index'

或您正在使用的任何客户端的等效内容。

如果要停止自动索引创建,请将其添加到config / elasticsearch.yml:
action.auto_create_index: false

可以在这里找到:Automatic index creation

关于elasticsearch - 在为大型数据建立索引时,如果我再次删除索引ElasticSearch并创建索引并为文档建立索引而不是给Index不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32714066/

相关文章:

java - Elasticsearch +jdk

elasticsearch - 嵌套查询在 bool 中写入必须和应该

.net - NEST 7:如何获取每个文档的出现编号?

amazon-web-services - Docker 容器中的 Elasticsearch、AWS 中的集群发现

nest - 弹性客户端处置

c# - 如果输出文档分数与ID相同,则C#Elastic Search Nest

c# - 如何在 NEST2 中更新 Elasticsearch 文档

elasticsearch - 无法使用公共(public) ip 连接到 Elasticsearch EC2 端口 9200

elasticsearch - NEST:如何处理包含单个值的数组字段(Newtonsoft Json 序列化错误)

rest - 同时查询字符串和范围