2016-08-30 6 views
0

Ich bin ziemlich neu in Elasticsearch: Ich habe eine Elasticsearch Mapping entwickelt, um Daten aus stark normalisierten SQL Server-Datenbanken aufzunehmen. Ich mache eine volle Ladung von Millionen von Datensätzen jedes Mal, wenn ich eine Strukturänderung (Mapping-Änderung) habe. Dies würde manchmal so sperrig und langsam Tage dauern, um abzuschließen. Ich versuche, eine Möglichkeit zu finden, verschachtelte Array- und verschachtelte Objektfelder teilweise zu aktualisieren, ohne dass die gesamten Indexdaten indexiert werden müssen.Elasticsearch, wie man ein bestimmtes verschachteltes Array-Feld Dokumente aktualisiert, die bestimmte Kriterien qualifizieren?

dies ist, wie mein Mapping wie folgt aussieht:

{ 
    "Product": { 
     "dynamic": "strict", 
     "properties": { 
      "ProductID": { 
       "type": "integer" 
      }, 
      "ProductCategory": { 
       "index": "not_analyzed", 
       "type": "string" 
      }, 
      "TotalNumberOfProduct": { 
       "type": "float" 
      }, 
      "MetalProduct": { 
       "type": "nested", 
       "properties": { 
        "MetalProductCategory": { 
         "index": "not_analyzed", 
         "type": "string" 
        }, 
        "MetalProductDescription": { 
         "index": "not_analyzed", 
         "type": "string" 
        }, 
        "MetalProductID": { 
         "type": "integer" 
        } 
       } 
      } 
     } 
    } 
} 

ich mehr mehr MetalProducts verschachtelten Array Dokumente in einem einzigen Produkt Dokument haben kann. Eg. Unter ProductID 001 kann ich MetalProductID = 222 MetalProductID = 333 haben. Wie kann ich ein bestimmtes verschachteltes Dokument (MetalProductID = 222) unter ProductID = 001 aktualisieren? Danke für Ihre Hilfe.

+0

Diese Antwort könnte helfen: http://stackoverflow.com/questions/38741658/elasticsearch-remove-update-field-inside-nested-object/38742217#38742217 – Val

Antwort

0

Sie müssen _id des zuvor eingefügten Dokuments aktualisieren, um es zu aktualisieren. Die elastische Suche muss die neuen Daten sowieso neu indizieren, aber dieses Mal kann sie nur innerhalb des Shards statt der gesamten Daten arbeiten. https://www.elastic.co/guide/en/elasticsearch/guide/current/partial-updates.html

+0

Ich bin ausdrücklich _id immer zuweisen. Meine Frage ist, wie Sie ein einzelnes verschachteltes Feld unter diesem _id aktualisieren können, das das eindeutige Bezeichnerfeld des verschachtelten Objekts erwähnt. – JameSQL

Verwandte Themen