如何在elasticsearch中加快文档附加到现有数组的速度?

时间:2018-07-10 09:51:11

标签: elasticsearch elasticsearch-5 elasticsearch-plugin

我正在使用Elasticsearch版本6.3.1。 我正在创建一个嵌套的类型字段,我已经创建了该字段以附加具有相同ID的所有文档。

这是我的索引架构:-

curl -XPUT 'localhost:9200/axes_index_test12?pretty' -H 'Content-Type: application/json' -d'
{
"mappings": {
     "axes_type_test12": {
        "properties": {
           "totalData": {
              "type": "nested",
              "properties": {
                 "gpsdt": {
                    "type": "date",
        "format":"dateOptionalTime"
                 },
         "extbatlevel": {
                    "type": "integer"
                 },
         "intbatlevel" : {
        "type" : "integer"
         },
         "lastgpsdt": {
                    "type": "date",
        "format":"dateOptionalTime"
                 },
             "satno" : {
        "type" : "integer"
         },
         "srtangle" : {
        "type" : "integer"
         }
              }
           },
           "imei": {
              "type": "long"
           },
           "date": {
              "type": "date", "format":"dateOptionalTime"
           },
       "id" : {
       "type" : "long"
    }
        }
     }
  }
}'

然后添加到现有数组中,我调用以下API:-

这是我必须附加的文件:-

data={
                    "script" : {"source": "ctx._source.totalData.add(params.count)",
                    "lang": "painless",
                    "params" : {"count" : { "gpsdt" : gpsdt,
                                                    "analog1" : analog1,
                                                    "analog2" : analog2,
                                                    "analog3" : analog3,
                                                    "analog4" : analog4,
                                                    "digital1" : digital1,
                                                    "digital2" : digital2,
                                                    "digital3" : digital3,
                                                    "digital4" : digital4,
                                                    "extbatlevel" : extbatlevel,
                                                    "intbatlevel" : intbatlevel,
                                                    "lastgpsdt" : lastgpsdt,
                                                    "latitude" : latitude,
                                                    "longitude" : longitude,
                                                    "odo" : odo,
                                                    "odometer" : odometer,
                                                    "satno" : satno,
                                                    "srtangle" : srtangle,
                                                    "speed" : speed
                                               }
                               }
                                    }
            }

文档解析:-

json_data = json.dumps(data)

API网址为:-

API_ENDPOINT = "http://localhost:9200/axes_index_test12/axes_type_test12/"+str(documentId)+"/_update"

还有Finnaly,我将此API称为:-

headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
r = requests.post(url = API_ENDPOINT, data = json_data,headers=headers

一切都很好,但是当我在现有数组中追加新文档时,我的表现却不佳。

所以请建议我应该做些什么改变? 我有4个节点集群,1个主节点,2个数据节点和1个Cordinator节点。

0 个答案:

没有答案