Elastisch zoeken

Elasticsearch Opnieuw indexeren Veldtype wijzigen

Elasticsearch Opnieuw indexeren Veldtype wijzigen

Werken met databases is erg leuk, maar kan soms een uitdaging zijn, vooral als het gaat om reeds bestaande gegevens.

Als u bijvoorbeeld het type van een specifiek veld wilt wijzigen, kan het zijn dat u de service moet uitschakelen, wat ernstige gevolgen kan hebben, vooral in services die grote hoeveelheden gegevens verwerken.

Gelukkig kunnen we de krachtige functies van Elasticsearch gebruiken, zoals herindexering, ingest-knooppunten, pijplijnen en processors om dergelijke taken heel gemakkelijk te maken.

Deze zelfstudie laat u zien hoe u een veldtype in een specifieke index kunt wijzigen in een andere, met behulp van Elasticsearch Ingest-knooppunten. Door deze aanpak te gebruiken, wordt uitvaltijd die van invloed is op services geëlimineerd, terwijl het toch lukt om de veldtypewijzigingstaken uit te voeren.

Inleiding tot Ingest Nodes

Met het ingest-knooppunt van Elasticsearch kunt u documenten voorverwerken voordat ze worden geïndexeerd.

Een Elasticsearch-knooppunt is een specifiek exemplaar van Elasticsearch; verbonden knooppunten (meer dan één) vormen een enkele cluster.

U kunt de beschikbare knooppunten in het actieve cluster bekijken met de aanvraag:

GET /_nodes/

Het cURL-commando hiervoor is:

curl -XGET “http://localhost:9200/_nodes/”

Het uitvoeren van deze opdracht zou u enorme informatie over de knooppunten moeten geven, zoals hieronder weergegeven (afgekorte uitvoer):


"_nodes" :
"totaal" : 3,
"geslaagd" : 3,
"mislukt" : 0
,
"cluster_name" : "22e0bee6ef91461d82d9b0f1b4b13b4a",
"knooppunten" :
"gSlMjTKyTemoOX-EO7Em4w" :
"naam" : "instance-0000000003",
"transport_address" : "172.28.86.133:19925",
"host" : "172.28.86.133",
"ip" : "172.28.86.133",
"versie" : "7.10.2",
"build_flavor" : "standaard",
"build_type" : "docker",
"build_hash" : "747e1cc71def077253878a59143c1f785afa92b9",
"total_indexing_buffer" : 214748364,
"rollen" : [
"gegevens",
"data_koud",
"data_content",
"data_hot",
"data_warm",
"innemen",
"meester",
"remote_cluster_client",
"transformeren"
],
"attributen" :
"logische_beschikbaarheid_zone" : "zone-0",
"server_name" : "instance-0000000003.22e0bee6ef91461d82d9b0f1b4b13b4a",
"availability_zone" : "us-west-1c",
"xpack".geïnstalleerd" : "waar",
"instance_configuration" : "aws.gegevens.highio.i3",
"transformeren.knooppunt" : "waar",
"regio" : "us-west-1"
,
"instellingen" :
"s3" :
"klant" :
"elastisch-intern-22e0be" :
"eindpunt" : "s3-us-west-1.amazones.kom"


,
--------------------------------uitgang afgekapt---------------------

Standaard schakelen alle Elasticsearch-knooppunten ingest in en kunnen ze ingest-bewerkingen afhandelen. Voor zware opnamebewerkingen kunt u echter een enkel knooppunt maken dat alleen is bedoeld voor opname in.

Om pre_process af te handelen, moeten we, voordat we de documenten indexeren, een pijplijn definiëren die de preprocessors-reeks aangeeft.

Preprocessors zijn sets instructies die rond een pijplijn zijn gewikkeld en één voor één worden uitgevoerd.

Hieronder volgt de algemene syntaxis voor het definiëren van een pijplijn:


"description" : "Converteer mij",
"verwerkers" : [
"converteren" :
"veld" : "id",
"type": "geheel getal"
]

De eigenschap description zegt wat de pijplijn moet bereiken. De volgende parameter zijn de preprocessors, doorgegeven als een lijst in de volgorde van hun uitvoering.

Een conversiepijplijn maken

Om een ​​pijplijn te maken die we zullen gebruiken om een ​​type te converteren, gebruikt u het PUT-verzoek met het _ingest API-eindpunt als:

PUT _ingest/pipeline/convert_pipeline

"description": "converteert het veld dayOfWeek naar een long from integer",
"verwerkers" : [

"converteren" :
"field" : "dayOfWeek",
"type": "lang"


]

Gebruik voor cURL het commando:

curl -XPUT "http://localhost:9200/_ingest/pipeline/convert_pipeline" -H 'Content-Type: application/json' -d'  "description": "converteert het dayOfWeek-veld naar een long van integer",  " processors" : [          "convert" :         "field" : "dayOfWeek",        "type": "long"            ]'

Opnieuw indexeren en converteren Type

Zodra we de pijplijn in het ingest-knooppunt hebben, hoeven we alleen de indexerings-API aan te roepen en de pijplijn door te geven als een argument in de dest van de aanvraaginstantie als:

POST _reindex

“bron”:
"index": "kibana_sample_data_flights"
,
"bestemming":
"index": "kibana_sample_type_diff",
"pipeline": "convert_pipeline"

Voor krul:

curl -XPOST "http://localhost:9200/_reindex" -H 'Content-Type: application/json' -d'  "source":     "index": "kibana_sample_data_flights"  ,  "dest":     "index ": "kibana_sample_type_diff",    "pipeline": "convert_pipeline"  '

 Conversie verifiëren

Om te controleren of de pijplijn correct is toegepast, gebruikt u het GET-verzoek om dat specifieke veld op te halen als:

GET /kibana_sample_data_flights/_mapping/field/dayOfWeek
GET /kibana_sample_type_diff/_mapping/field/dayOfWeek

Dit zou de gegevens moeten retourneren als:

-----------------------ORIGINELE INDEX---------------------------

"kibana_sample_data_flights" :
"toewijzingen" :
"dag van de week" :
"full_name" : "dayOfWeek",
"in kaart brengen" :
"dag van de week" :
"type" : "geheel getal"






-------------------------OPNIEUW GEINDEXEERDE GEGEVENS-------------------------------

"kibana_sample_type_diff" :
"toewijzingen" :
"dag van de week" :
"full_name" : "dayOfWeek",
"in kaart brengen" :
"dag van de week" :
"type" : "lang"





Conclusie

In deze handleiding hebben we gekeken hoe we met Elasticsearch Ingest-knooppunten kunnen werken om documenten voor te verwerken voordat ze worden geïndexeerd, waardoor een veld van het ene type naar het andere wordt geconverteerd.

Bekijk de documentatie voor meer informatie.

https://www.elastisch.co/guide/nl/elastisch zoeken/referentie/master/ingest.html

Microsoft Sculpt Touch draadloze muis Review
Ik las onlangs over de Microsoft Sculpt Touch draadloze muis en besloot hem te kopen. Nadat ik het een tijdje had gebruikt, besloot ik mijn ervaring e...
AppyMouse trackpad en muisaanwijzer op het scherm voor Windows-tablets
Tabletgebruikers missen vaak de muisaanwijzer, vooral wanneer ze gewend zijn om de laptop te gebruiken. Het touchscreen Smartphones en tablets hebben ...
Middelste muisknop werkt niet in Windows 10
De middelste muis knop helpt u door lange webpagina's en schermen met veel gegevens te bladeren. Als dat stopt, zul je uiteindelijk het toetsenbord ge...