0

現在、Java API を使用して ElasticSearch ドキュメントを更新しようとしています。次のコードを含むグルーヴィーなスクリプトがあります。

static updateRequestById(String agencyIndex, String type, String id, def policy) {        
        UpdateRequest updateRequest = new UpdateRequest()
        updateRequest.docAsUpsert(true);
        updateRequest.parent("agentNumber");
        updateRequest.index(agencyIndex)
        updateRequest.type(type)
        updateRequest.id(id)
        updateRequest.doc("policies", policy)
        elasticsearchClient.update(updateRequest).get()
    }

私が抱えている問題は、次のドキュメント内の配列を更新したいということです:

{
   "took": 4,
   "timed_out": false,
   "_shards": {
      "total": 10,
      "successful": 10,
      "failed": 0
   },
   "hits": {
      "total": 1,
      "max_score": 1,
      "hits": [
         {
            "_index": "int-b-agency",
            "_type": "jacket",
            "_id": "99808.1.27.09_4644",
            "_score": 1,
            "_source": {
               "agentNumber": "99808.1.27.09",
               "fileNumber": "4644",
               "policies": [
                  {
                     "agentNumber": "99808.1.27.09",
                     "fileNumber": "4644",
                     "policyNumber": "2730609-91029084",
                     "checkNumber": "0",
                     "checkAmount": 0,
                     "createdOn": null,
                     "createdBy": "traxuser621",
                     "propertyTypeCode": "",
                     "propertyTypeDesc": "1-4 FAMILY RESIDENTIAL",
                     "ppaddress": "110 Allan Ct ",
                     "ppcity": "Jacksonville",
                     "ppstate": "FL",
                     "ppzip": "32226",
                     "ppcounty": "Duval",
                     "policytype": "",
                     "status": "Active",
                     "effectiveDate": "2015-04-01T00:00:00-05:00",
                     "formType": "BASIC OWNERS - ALTA Owners Policy 06_306_FL - FL Original Rate",
                     "rateCode": "FLOR",
                     "rateCodeDesc": "FL Original Rate",
                     "policyTypeCode": "1",
                     "policyTypeCodeDesc": "BASIC OWNERS",
                     "amount": 200000,
                     "hoiAgentNumber": "",
                     "proForma": false,
                     "pdfLocation": "\\\\10.212.61.206\\FNFCenter\\legacy_jacket_pdfs\\2015_4_FL6465\\Policy_2730609-91029084.pdf",
                     "legacyPolicy": "true",
                     "associatedPolNbr": null
                  }
               ]
            }
         }
      ]
   }
}

上記のドキュメントには、単一のオブジェクトを持つ「policies」という配列を持つドキュメントがあります。「ポリシー」配列を追加のオブジェクトで更新できるようにしたいと考えています。最終結果は次のようになります。

{
   "took": 4,
   "timed_out": false,
   "_shards": {
      "total": 10,
      "successful": 10,
      "failed": 0
   },
   "hits": {
      "total": 1,
      "max_score": 1,
      "hits": [
         {
            "_index": "int-b-agency",
            "_type": "jacket",
            "_id": "41341.1.81.38_41340103",
            "_score": 1,
            "_source": {
               "agentNumber": "41341.1.81.38",
               "fileNumber": "41340103",
               "policies": [
                  {
                     "agentNumber": "41341.1.81.38",
                     "fileNumber": "41340103",
                     "policyNumber": "8122638-91036874",
                     "checkNumber": "0",
                     "checkAmount": 0,
                     "createdOn": null,
                     "createdBy": "traxuser621",
                     "propertyTypeCode": "",
                     "propertyTypeDesc": "1-4 FAMILY RESIDENTIAL",
                     "ppaddress": "1800 Smith St ",
                     "ppcity": "sicklerville",
                     "ppstate": "PA",
                     "ppzip": "08105",
                     "ppcounty": "Dauphin",
                     "policytype": "",
                     "status": "Active",
                     "effectiveDate": "2016-02-01T00:00:00-06:00",
                     "formType": "TestData",
                     "rateCode": "PASALERATE",
                     "rateCodeDesc": "Sale Rate - Agent",
                     "policyTypeCode": "26",
                     "policyTypeCodeDesc": "SALE OWNERS",
                     "amount": 180000,
                     "hoiAgentNumber": "",
                     "proForma": false,
                     "pdfLocation": "SomeLocation1",
                     "legacyPolicy": "true",
                     "associatedPolNbr": null
                  },
                  {
                     "agentNumber": "41341.1.81.38",
                     "fileNumber": "41340103",
                     "policyNumber": "8122638-91036875",
                     "checkNumber": "0",
                     "checkAmount": 0,
                     "createdOn": null,
                     "createdBy": "traxuser621",
                     "propertyTypeCode": "",
                     "propertyTypeDesc": "1-4 FAMILY RESIDENTIAL",
                     "ppaddress": "1800 Smith St ",
                     "ppcity": "sicklerville",
                     "ppstate": "PA",
                     "ppzip": "08105",
                     "ppcounty": "Dauphin",
                     "policytype": "",
                     "status": "Active",
                     "effectiveDate": "2016-02-01T00:00:00-06:00",
                     "formType": "Test Data",
                     "rateCode": "PASALERATE",
                     "rateCodeDesc": "Sale Rate - Agent",
                     "policyTypeCode": "26",
                     "policyTypeCodeDesc": "SALE OWNERS",
                     "amount": 180000,
                     "hoiAgentNumber": "",
                     "proForma": false,
                     "pdfLocation": "SomeLocation2",
                     "legacyPolicy": "true",
                     "associatedPolNbr": null
                  }
               ]
            }
         }
      ]
   }
}

私は何を間違っていますか?

4

2 に答える 2

1

逆索引の更新は、文書の削除と置換です。データベースで見られるようなインプレース更新はありません。ES は内部で Lucene を使用しており、これにより、非常に優れた逆インデックスが実装されます。

于 2016-03-03T18:10:05.717 に答える