Tüm Ürünler
Search
Belge Merkezi

DataWorks:Elasticsearch veri kaynağı

Son Güncelleme:Oct 05, 2026

Elasticsearch veri kaynakları, DataWorks ile Elasticsearch arasında veri senkronizasyonu için çift yönlü okuma ve yazma kanalları sağlar.

Uygulanabilirlik

Ortak kaynak grupları Elasticsearch 5.x sürümünü desteklerken, Serverless kaynak grupları (önerilen) ve veri entegrasyonu için özel kaynak grupları Elasticsearch 5.x, 6.x, 7.x ve 8.x sürümlerini destekler.

Not

Elasticsearch, Apache lisansı altında geliştirilen açık kaynaklı, kurumsal düzeyde bir arama motorudur. Lucene üzerine inşa edilmiş olup dağıtılmış arama ve veri analizi yetenekleri sunar. Aşağıdaki tabloda temel Elasticsearch kavramları ile bunların ilişkisel veritabanındaki karşılıkları gösterilmiştir.


Elasticsearch


İlişkisel veritabanı


Elasticsearch (örnek)


ilişkisel veritabanı (örnek)


dizin


veritabanı


tür


tablo


belge


satır


alan


sütun

Bir Elasticsearch örneği birden fazla dizin içerebilir. Her dizin birden fazla tür barındırır, her tür birden fazla belge içerir ve her belge de birden fazla alandan oluşur. Elasticsearch Writer eklentisi, verileri toplu olarak Elasticsearch'e yazmak için Elasticsearch REST API'sini kullanır.

Desteklenen sürümler

DataWorks, Alibaba Cloud Elasticsearch'in 5.x, 6.x, 7.x ve 8.x sürümlerini destekler ancak kendi kendine yönetilen Elasticsearch örneklerini desteklemez.

Sınırlamalar

Elasticsearch'ten çevrimdışı okuma ve bu sisteme yazma işlemleri için aşağıdaki sınırlamalar geçerlidir:

  • Elasticsearch Reader, veri senkronizasyonu için sunucudan parça bilgilerini alır. Veri tutarsızlığını önlemek amacıyla senkronizasyon sırasında tüm parçaların etkin olması gerekir.

  • Elasticsearch 6.x veya sonraki sürümler için serverless kaynak grubu (önerilen) veya Veri Entegrasyonu için özel kaynak grubu kullanabilirsiniz.

  • scaled_float alanları senkronize edilemez.

  • Alan adlarında $ref anahtar kelimesi bulunan dizinler senkronize edilemez.

Desteklenen alan türleri


Tür


Çevrimdışı okuma


Çevrimdışı yazma


Gerçek zamanlı yazma


binary


Desteklenir


Desteklenir


Desteklenir


boolean


Desteklenir


Desteklenir


Desteklenir


keyword


Desteklenir


Desteklenir


Desteklenir


constant_keyword


Desteklenmez


Desteklenmez


Desteklenmez


wildcard


Desteklenmez


Desteklenmez


Desteklenmez


long


Desteklenir


Desteklenir


Desteklenir


integer


Desteklenir


Desteklenir


Desteklenir


short


Desteklenir


Desteklenir


Desteklenir


byte


Desteklenir


Desteklenir


Desteklenir


double


Desteklenir


Desteklenir


Desteklenir


float


Desteklenir


Desteklenir


Desteklenir


half_float


Desteklenmez


Desteklenmez


Desteklenmez


scaled_float


Desteklenmez


Desteklenmez


Desteklenmez


unsigned_long


Desteklenmez


Desteklenmez


Desteklenmez


date


Desteklenir


Desteklenir


Desteklenir


date_nanos


Desteklenmez


Desteklenmez


Desteklenmez


alias


Desteklenmez


Desteklenmez


Desteklenmez


object


Desteklenir


Desteklenir


Desteklenir


flattened


Desteklenmez


Desteklenmez


Desteklenmez


nested


Desteklenir


Desteklenir


Desteklenir


join


Desteklenmez


Desteklenmez


Desteklenmez


integer_range


Desteklenir


Desteklenir


Desteklenir


float_range


Desteklenir


Desteklenir


Desteklenir


long_range


Desteklenir


Desteklenir


Desteklenir


double_range


Desteklenir


Desteklenir


Desteklenir


date_range


Desteklenir


Desteklenir


Desteklenir


ip_range


Desteklenmez


Desteklenir


Desteklenir


ip


Desteklenir


Desteklenir


Desteklenir


version


Desteklenir


Desteklenir


Desteklenir


murmur3


Desteklenmez


Desteklenmez


Desteklenmez


aggregate_metric_double


Desteklenmez


Desteklenmez


Desteklenmez


histogram


Desteklenmez


Desteklenmez


Desteklenmez


text


Desteklenir


Desteklenir


Desteklenir


annotated-text


Desteklenmez


Desteklenmez


Desteklenmez


completion


Desteklenir


Desteklenmez


Desteklenmez


search_as_you_type


Desteklenmez


Desteklenmez


Desteklenmez


token_count


Desteklenir


Desteklenmez


Desteklenmez


dense_vector


Desteklenmez


Desteklenmez


Desteklenmez


rank_feature


Desteklenmez


Desteklenmez


Desteklenmez


rank_features


Desteklenmez


Desteklenmez


Desteklenmez


geo_point


Desteklenir


Desteklenir


Desteklenir


geo_shape


Desteklenir


Desteklenir


Desteklenir


point


Desteklenmez


Desteklenmez


Desteklenmez


shape


Desteklenmez


Desteklenmez


Desteklenmez


percolator


Desteklenmez


Desteklenmez


Desteklenmez


string


Desteklenir


Desteklenir


Desteklenir

Çalışma şekli

Elasticsearch Reader şu şekilde çalışır:

  • Elasticsearch _searchscrollslice API'sini kullanır ve kaydırma dilimi özelliğini Data Integration'ın çok iş parçacıklı parçalama yapısıyla birleştirir.

  • Elasticsearch'teki eşleme yapılandırmasına göre veri türlerini dönüştürür.

Daha fazla bilgi için bkz. resmi Elasticsearch belgeleri.

Not

Elasticsearch Reader, veri senkronizasyonu için sunucudan parça bilgilerini alır. Veri tutarsızlığını önlemek amacıyla veri senkronizasyonu sırasında sunucu tarafındaki tüm parçaların etkin kalmasını sağlamalısınız.

Temel yapılandırma

Önemli

Üretim ortamında işi çalıştırmadan önce koddan açıklamaları kaldırın.

{
 "order":{
  "hops":[
   {
    "from":"Reader",
    "to":"Writer"
   }
  ]
 },
 "setting":{
  "errorLimit":{
   "record":"0" // The error limit. The job stops if the error count exceeds this value.
  },
  "jvmOption":"",
  "speed":{
   "concurrent":3, // The number of concurrent threads.
   "throttle":true,
   "mbps":"12"    // The maximum speed in MB/s.
  }
 },
 "steps":[
  {
   "category":"reader",
   "name":"Reader",
   "parameter":{
    "column":[ // The columns to read.
     "id",
     "name"
    ],
    "endpoint":"", // The service endpoint.
    "index":"",  // The source index.
    "password":"",  // The password for authentication.
    "scroll":"",  // The scroll context duration.
    "search":"",  // The query body, same as the `query` object in an Elasticsearch `_search` request.
    "type":"default",
    "username":""  // The username for authentication.
   },
   "stepType":"elasticsearch"
  },
  {
   "stepType": "elasticsearch",
            "parameter": {
                "column": [ // The columns to write.
                    {
                        "name": "id",
                        "type": "integer"
                    },
                    {
                        "name": "name",
                        "type": "text"
                    }
                ],
                "index": "test",   // The destination index.
                 "indexType": "",   // The index type. Leave this empty for Elasticsearch v7.x or later.
                "actionType": "index",  // The write mode.
                "cleanup": false,         // Specifies whether to recreate the index before writing.
                "datasource": "test",   // The data source name.
                "primaryKeyInfo": {     // The primary key configuration.
                    "fieldDelimiterOrigin": ",",
                    "column": [
                        "id"
                    ],
                    "type": "specific",
                    "fieldDelimiter": ","
                },
                "dynamic": false,  // Specifies whether to enable dynamic mapping.
                "batchSize": 1024   // The number of documents to write per batch.
            },
            "name": "Writer",
            "category": "writer"
  }
 ],
 "type":"job",
 "version":"2.0" // The version number.
}

Gelişmiş özellikler

  • Tam belge çekme

    Bir Elasticsearch belgesinin tamamının içeriğini tek bir alana çekebilirsiniz. Yapılandırma ayrıntıları için bkz. Senaryo 1: Tam belge çekme.

  • Yarı yapılandırılmış verileri yapılandırılmış verilere dönüştürme

    Kategori

    Açıklama

    Başvurular

    Arka plan

    Elasticsearch verileri genellikle dinamik alanlara ve derin iç içe geçmiş yapılara sahiptir. Bu özellik, yarı yapılandırılmış verileri aşağı akış hesaplama ve depolama için yapılandırılmış verilere dönüştürür.

    —

    Çalışma şekli

    Çözüm, Elasticsearch'ten gelen JSON verilerini ayrıştırır, yol ifadelerini kullanarak iç içe geçmiş yapıları düzleştirir ve sonuçları yapılandırılmış tablolara eşler. Karmaşık belgeler gerekirse birden fazla tabloya bölünebilir.

    —

    Çözümler

    İç içe geçmiş JSON verileri için belirli özelliklere erişmek üzere bir yol kullanın.

    • property

    • property.sub-property

    • property[0].sub-property

    Senaryo 2: İç içe geçmiş veya nesne alanı özelliklerini senkronize etme

    Bire çok ilişkiler için bir dizi özelliğini genişleterek öğelerini birden fazla satıra ayırın.

    property[*].sub-property

    Senaryo 3: Bir dizi özelliğini birden fazla satıra ayırma

    Bir dizeden oluşan dizinin öğelerini birleştirip yinelemesiz hale getirerek tek bir özelliğe dönüştürün.

    property[]

    Senaryo 4: Bir dizi özelliğini yinelemesiz hale getirme ve birleştirme

    Birden fazla özelliği tek bir özellikte birleştirin.

    property1,property2

    Senaryo 5: Çoklu özellik birleştirme

    Bir listeden ilk boş olmayan özelliği seçin.

    property1|property2

    Senaryo 6: Çoklu özellik seçimi

Veri kaynağı ekleme

DataWorks'te bir senkronizasyon görevi geliştirmeden önce Veri kaynağı yapılandırması bölümündeki talimatları izleyerek gerekli veri kaynağını DataWorks'e eklemeniz gerekir. Veri kaynağı eklerken parametrelerin anlamlarını anlamak için DataWorks konsolunda parametre açıklamalarını görüntüleyebilirsiniz.

Veri senkronizasyon görevleri

Bir senkronizasyon görevini yapılandırmak için giriş noktası ve prosedür hakkında bilgi edinmek üzere aşağıdaki yapılandırma kılavuzlarına bakın.

Çevrimdışı senkronizasyon görevi (tek tablo)

Gerçek zamanlı yazma görevi (tek tablo)

Bkz. DataStudio'da (Eski) gerçek zamanlı senkronizasyon görevi yapılandırma.

Tam veritabanı gerçek zamanlı senkronizasyon

Bkz. Gerçek zamanlı tam veritabanı senkronizasyon görevi yapılandırma.

Ek 1: Komut dosyası demosu ve parametreler

Kod düzenleyiciyi kullanarak toplu senkronizasyon görevi yapılandırma

Kod düzenleyiciyi kullanarak toplu senkronizasyon görevi yapılandırmak istiyorsanız, komut dosyasındaki ilgili parametreleri birleşik komut dosyası biçimi gereksinimlerine göre yapılandırmanız gerekir. Daha fazla bilgi için bkz. Komut dosyası modu yapılandırması. Aşağıdaki bilgiler, kod düzenleyiciyi kullanarak toplu senkronizasyon görevi yapılandırırken veri kaynakları için yapılandırmanız gereken parametreleri açıklar.

Reader komut dosyası demosu

{
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    },
    "setting":{
        "errorLimit":{
            "record":"0" // The number of error records allowed.
        },
        "jvmOption":"",
        "speed":{
            "concurrent":3,
            "throttle":false
        }
    },
    "steps":[
        {
            "category":"reader",
            "name":"Reader",
            "parameter":{
                "column":[ // The columns to read.
                    "id",
                    "name"
                ],
                "endpoint":"http://es-cn-xxx.elasticsearch.aliyuncs.com:9200", // The endpoint.
                "index":"aliyun_es_xx",  // The index.
                "password":"*******",  // The password.
                "multiThread":true,
                "scroll":"5m",  // The scroll context duration.
                "pageSize":5000,
                "connTimeOut":600000,
                "readTimeOut":600000,
                "retryCount":30,
                "retrySleepTime":"10000",
                "search":{
                            "range":{
                                "gmt_modified":{
                                    "gte":0
                                }
                            }
                        },  // Query parameter. The content is identical to the query body of the Elasticsearch _search API.
                "type":"doc",
                "username":"aliyun_di"  // The username.
            },
            "stepType":"elasticsearch"
        },
        {
            "category":"writer",
            "name":"Writer",
            "parameter":{ },
            "stepType":"stream"
        }
    ],
    "type":"job",
    "version":"2.0" // The version number.
}

Reader komut dosyası parametreleri

Parametre

Açıklama

Gerekli

Varsayılan

datasource

Mevcut bir DataWorks veri kaynağının adı.

Evet

Yok

index

Elasticsearch'teki dizin adı.

Evet

Yok

type

Elasticsearch'teki bir dizinin tür adı.

Hayır

Dizin adı

search

Elasticsearch için sorgu gövdesi.

Evet

Yok

pageSize

Sayfa başına okunacak kayıt sayısı.

Hayır

100

scroll

Sayfalama için Elasticsearch kaydırma bağlamının ne kadar süreyle canlı tutulacağını belirtir.

  • Bu değerin çok düşük ayarlanması, sayfalar arası okumalar arasındaki uzun aralıklar nedeniyle kaydırma bağlamının süresinin dolmasına ve veri kaybına neden olabilir.

  • Bu değerin çok yüksek ayarlanması, eşzamanlı sorgular sunucunun max_open_scroll_context sınırını aşarsa sorgu hatasına yol açabilir.

Evet

Yok

strictMode

Katı modun etkinleştirilip etkinleştirilmeyeceğini belirtir. true olarak ayarlanırsa okuma görevi, kısmi veri okunmasını önlemek için bir shard.failed hatasında durur.

Hayır

true

sort

Sonuçların sıralanacağı alan.

Hayır

Yok

retryCount

Başarısız bir işlem için yeniden deneme sayısı.

Hayır

30

connTimeOut

Milisaniye cinsinden istemci bağlantı zaman aşımı.

Hayır

600.000

readTimeOut

Milisaniye cinsinden istemci okuma zaman aşımı.

Hayır

600.000

multiThread

HTTP istekleri için birden fazla iş parçacığı kullanılıp kullanılmayacağını belirtir.

Hayır

true

preemptiveAuth

HTTP istekleri için önleyici kimlik doğrulama kullanılıp kullanılmayacağını belirtir.

Hayır

false

retrySleepTime

Milisaniye cinsinden yeniden denemeler arasındaki süre.

Hayır

10.000

discovery

Düğüm keşfinin etkinleştirilip etkinleştirilmeyeceğini belirtir.

  • true: İstemci kümedeki rastgele bir düğüme bağlanır, sunucu listesini düzenli olarak yeniler ve keşfedilen düğümlere istek gönderir.

  • false: Yalnızca yapılandırılan uç noktaya istek gönderir.

Hayır

false

compression

İstek gövdesini sıkıştırmak için GZIP kullanılıp kullanılmayacağını belirtir. GZIP kullanıyorsanız Elasticsearch düğümünde http.compression ayarını etkinleştirmeniz gerekir.

Hayır

false

dateFormat

Senkronize edilecek bir alan tarih türündeyse ve alan eşlemesinde bir biçim belirtilmemişse dateFormat parametresini yapılandırmanız gerekir. Bu yapılandırma, senkronize edilecek tarih türü alanların tüm biçimlerini içermelidir. Örnek: "dateFormat" : "yyyy-MM-dd||yyyy-MM-dd HH:mm:ss".

Hayır

Yok

full

Belgenin tamamının içeriğinin tek bir alan olarak hedefe senkronize edilip edilmeyeceğini belirtir. Daha fazla bilgi için bkz. Senaryo 1: Tam veri çekme.

Hayır

Yok

multi

Beş kullanım durumu olan gelişmiş bir özelliktir. multi.key ve multi.mult olmak üzere iki alt özelliği vardır. Daha fazla bilgi için bkz. Gelişmiş özellikler bölümündeki tablo.

Hayır

Yok

Writer komut dosyası demosu

{
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    },
    "setting": {
        "errorLimit": {
            "record": "0"
        },
        "speed": {
            "throttle":true, // If throttle is false, the mbps parameter is ignored and throttling is disabled. If throttle is true, throttling is enabled.
            "concurrent":1, // The job concurrency.
            "mbps":"12" // The maximum rate in Mbps (1 Mbps = 1 MB/s).
        }
    },
    "steps": [
        {
            "category": "reader",
            "name": "Reader",
            "parameter": {

            },
            "stepType": "stream"
        },
        {
            "category": "writer",
            "name": "Writer",
            "parameter": {
                "datasource":"xxx",
                "index": "test-1",
                "type": "default",
                "cleanup": true,
                "settings": {
                        "number_of_shards": 1,
                        "number_of_replicas": 0
                },
                "discovery": false,
                "primaryKeyInfo":{
                    "type":"pk",    
                     "fieldDelimiter":",",
                     "column":[]
                    },
                "batchSize": 1000,
                "dynamic":false,
                "esPartitionColumn":[
                    {
                        "name":"col1",  
                        "comment":"xx", 
                        "type":"STRING" 
                        }
                     ],
                "column": [
                    {
                        "name": "pk",
                        "type": "id"
                    },
                    {
                        "name": "col_ip",
                        "type": "ip"
                    },
                    {
                        "name": "col_array",
                        "type": "long",
                        "array": true
                    },
                    {
                        "name": "col_double",
                        "type": "double"
                    },
                    {
                        "name": "col_long",
                        "type": "long"
                    },
                    {
                        "name": "col_integer",
                        "type": "integer"
                    },
                    {
                        "name": "col_keyword",
                        "type": "keyword"
                    },
                    {
                        "name": "col_text",
                        "type": "text",
                        "analyzer": "ik_max_word",
                        "other_params":
                            {
                                "doc_values": false
                            }
                    },
                    {
                        "name": "col_geo_point",
                        "type": "geo_point"
                    },
                    {
                        "name": "col_date",
                        "type": "date",
                        "format": "yyyy-MM-dd HH:mm:ss"
                    },
                    {
                        "name": "col_nested1",
                        "type": "nested"
                    },
                    {
                        "name": "col_nested2",
                        "type": "nested"
                    },
                    {
                        "name": "col_object1",
                        "type": "object"
                    },
                    {
                        "name": "col_object2",
                        "type": "object"
                    },
                    {
                        "name": "col_integer_array",
                        "type": "integer",
                        "array": true
                    },
                    {
                        "name": "col_geo_shape",
                        "type": "geo_shape",
                        "tree": "quadtree",
                        "precision": "10m"
                    }
                ]
            },
            "stepType": "elasticsearch"
        }
    ],
    "type": "job",
    "version": "2.0"
}
Not

VPC ortamındaki bir Elasticsearch örneğine varsayılan kaynak grubundan erişilemeyebilir. Veri senkronizasyonu için bağlantıyı sağlamak amacıyla VPC'ye bağlanmak için serverless kaynak grubu (önerilen) veya Veri Entegrasyonu için özel bir kaynak grubu kullanmanız gerekir. Kaynak gruplarını ekleme hakkında daha fazla bilgi için bkz. Serverless kaynak grubu.

Writer komut dosyası parametreleri

Parametre

Açıklama

Gerekli

Varsayılan

datasource

Elasticsearch veri kaynağının adı. Veri kaynağı DataWorks'te yoksa önce bir tane oluşturun. Daha fazla bilgi için bkz. Elasticsearch veri kaynağı yapılandırma.

Evet

Yok

index

Elasticsearch'teki dizinin adı.

Evet

Yok

type

Elasticsearch'teki dizinin türü.

Hayır

default

cleanup

Yazmadan önce hedef dizinin silinip yeniden oluşturulup oluşturulmayacağını belirtir.

  • true: Yazmadan önce dizini siler ve yeniden oluşturur, mevcut tüm verileri kaldırır.

  • false: Dizindeki mevcut verileri korur.

Hayır

false

batchSize

Elasticsearch'e toplu yazma başına düşen belge sayısı.

Hayır

1.000

trySize

Elasticsearch'e yazma işlemi başarısız olduktan sonraki yeniden deneme sayısı.

Hayır

30

timeout

İstemci zaman aşımı süresi.

Hayır

600.000

discovery

Görev için düğüm keşfinin etkinleştirilip etkinleştirilmeyeceğini belirtir.

  • true: Kümedeki rastgele bir düğüme bağlanır. Düğüm keşfi etkinleştirildiğinde istemci sunucu listesini yoklar ve düzenli olarak yeniler.

  • false: İstemci yalnızca veri kaynağında yapılandırılan uç noktalara bağlanır.

Hayır

false

compression

HTTP istekleri için sıkıştırmanın etkinleştirilip etkinleştirilmeyeceğini belirtir.

Hayır

true

multiThread

HTTP istekleri için birden fazla iş parçacığı kullanılıp kullanılmayacağını belirtir.

Hayır

true

ignoreWriteError

Yazma hatalarının yoksayılıp yoksayılmayacağını belirtir. true olarak ayarlanırsa sistem başarısız işlemi atlar ve sonraki verileri yazmaya devam eder.

Hayır

false

ignoreParseError

Veri biçimi ayrıştırma hatalarının yoksayılıp yoksayılmayacağını ve sonraki verilerin yazılmaya devam edilip edilmeyeceğini belirtir.

Hayır

true

alias

Elasticsearch takma adı, bir veritabanı görünümü gibi çalışır. Örneğin, my_index dizini için my_index_alias adında bir takma adı oluşturursanız my_index_alias üzerindeki işlemler my_index dizinine uygulanır.

Yapılandırılırsa veri aktarımı tamamlandıktan sonra belirtilen dizin için bir takma ad oluşturulur.

Hayır

Yok

aliasMode

Veri aktarımı tamamlandıktan sonraki takma ad modu. Geçerli değerler append ve exclusive şeklindedir.

  • aliasMode değeri append olarak ayarlanırsa geçerli dizin takma ad eşlemesine eklenir. Bir takma ad birden fazla dizine eşlenebilir.

  • aliasMode değeri exclusive olarak ayarlanırsa mevcut takma ad kaldırılır ve ardından geçerli dizin takma ad eşlemesine eklenir. Bir takma ad yalnızca bir dizine eşlenebilir.

Sistem takma adı gerçek dizin adına çözer. Takma adları dizin geçişi, birden fazla dizinde birleşik sorgular ve görünüm benzeri işlevsellik uygulamak için kullanabilirsiniz.

Hayır

append

settings

Dizin oluşturma ayarları, resmi Elasticsearch ayarlarıyla aynı biçimdedir.

Hayır

Yok

column

column parametresi bir belgedeki alanları yapılandırır. Her alan için name ve type gibi temel özelliklerin yanı sıra Analyzer, Format ve Array gibi gelişmiş özellikleri ayarlayabilirsiniz.

Elasticsearch tarafından desteklenen alan türleri şunlardır:

- id  // The id type maps to _id in Elasticsearch and can be considered a unique primary key. When writing data, documents with the same id overwrite each other and are not indexed.
- string
- text
- keyword
- long
- integer
- short
- byte
- double
- float
- date
- boolean
- binary
- integer_range
- float_range
- long_range
- double_range
- date_range
- geo_point
- geo_shape
- ip
- token_count
- array
- object
- nested

Sütun türleriyle ilgili notlar:

  • text türündeki bir sütun için analyzer, norms ve index_options gibi parametreleri yapılandırabilirsiniz. Örnek:

    {
            "name": "col_text",
            "type": "text",
            "analyzer": "ik_max_word"
            }
  • date türündeki bir sütun için kaynak verileri ayrıştırmak amacıyla aşağıdaki yöntemlerden birini kullanabilirsiniz. Aynı yöntemi tutarlı bir şekilde kullanın.

    • Yöntem 1: reader'dan gelen alan değerini doğrudan es data alanına yazın.

      • Ham alan değerini doğrudan es data alanına yazmak için origin:true ayarını yapın. Bu gereklidir.

      • "format" özelliğini yapılandırarak es writer kullanarak bir eşleme oluştururken bu alan için format özelliğinin ayarlanması gerektiğini belirtin. Aşağıda bir örnek verilmiştir:

          {
             "parameter":{
               "column":[{
                   "name": "col_date",
                   "type": "date",
                   "format": "yyyy-MM-dd HH:mm:ss",
                   "origin": true
                }]
           }
        }
    • Yöntem 2 (Saat dilimi dönüştürme): Data Integration'ın saat dilimlerini dönüştürmesini istiyorsanız Timezone parametresini ekleyin.

      Yapılandırılan "format", Data Integration'ın saat dilimi dönüştürme sırasında ayrıştırma için kullandığı saat biçimini belirtir. Örnek:

        {
           "parameter" :{
             "column": [{
                "name": "col_date",
                "type": "date",
                "format": "yyyy-MM-dd HH:mm:ss",
               "Timezone": "UTC"
             }]
         }
      }
  • geo_shape türündeki bir sütun için tree (geohash veya quadtree) ve precision niteliklerini yapılandırabilirsiniz. Örnek:

    {
            "name": "col_geo_shape",
            "type": "geo_shape",
            "tree": "quadtree",
            "precision": "10m"
            }

column içindeki bir alan için type dışındaki Elasticsearch niteliklerini yapılandırmak üzere other_params parametresini kullanın. Eşlemeleri güncellerken bu parametre alanın diğer Elasticsearch niteliklerini açıklar.

 {
       "name": "guid",
       "other_params":
        {
           "doc_values": false
          },
        "type": "text"
      }

Kaynak verileri Elasticsearch'e bir dizi olarak yazmak istiyorsanız kaynak verileri JSON biçiminde veya belirtilen bir ayırıcı kullanarak ayrıştırabilirsiniz. Daha fazla bilgi için bkz. Ek 2: Verileri Elasticsearch'e dizi olarak yazma.

Evet

Yok

dynamic

Belgedeki yeni alanlar için eşlemelerin otomatik olarak eklenmesi amacıyla Elasticsearch dinamik eşlemesinin kullanılıp kullanılmayacağını belirtir.

  • true: Elasticsearch'ün otomatik eşleme davranışını korur.

  • false: Varsayılan değerdir. Elasticsearch eşlemeleri, senkronizasyon görevinin sütun yapılandırmasına göre oluşturulur ve güncellenir.

Elasticsearch 7.x'te varsayılan type değeri _doc şeklindedir. Otomatik eşlemeler kullanıyorsanız türü _doc ve esVersion değerini 7 olarak ayarlayın.

Komut dosyası moduna geçmeniz ve sürüm parametresini eklemeniz gerekir: "esVersion": "7".

Önemli

Alan eşleme hatalarıyla karşılaşırsanız sorunu çözmek için bu parametreyi etkinleştirmeyi deneyebilirsiniz. Ancak bu durum alan türlerinin beklentilerinizle tutarsız hale gelmesine veya veri anomalilerine yol açabilir. Etkinleştirmeden önce veri yapınız için riskleri değerlendirin.

Hayır

false

actionType

Yazma eylemi türünü belirtir. Geçerli değerler index ve update şeklindedir:

  • index: Dahili olarak Elasticsearch SDK'sından Index.Builder öğesini kullanarak toplu istekler oluşturur. Elasticsearch index eylemini kullanarak bir belge eklediğinizde önce belge verilerinde bir ID belirtilip belirtilmediğini kontrol eder:

    • ID belirtilmemişse Elasticsearch benzersiz bir ID oluşturur ve belgeyi ekler.

    • ID belirtilmişse Elasticsearch belgenin tamamını değiştirir. Yalnızca belirli alanların güncellenmesini desteklemez.

      Not

      Bu güncelleme işlemi, Elasticsearch'teki kısmi güncelleme ile aynı değildir.

  • update: Kullanıcı tarafından belirtilen bir ID'ye dayalı olarak bir belgeyi günceller. ID dizinde yoksa yeni bir belge eklenir. ID varsa işlem belirtilen column alanlarını günceller ve diğer belge alanlarını değiştirmez. Her update işlemi belirli alanları değiştirmek için belgenin tamamını alır. Bu update işlemi koşullu filtrelemeyi desteklemez ve yalnızca belirtilen ID'ye göre güncellemeler gerçekleştirir. Her güncelleme orijinal belgenin alınmasını gerektirdiğinden bu işlem performansı önemli ölçüde etkileyebilir.

    Not

    Eylem türünü update olarak ayarlarsanız primaryKeyInfo parametresini yapılandırmanız gerekir.

Hayır

index

primaryKeyInfo

Elasticsearch'te belge birincil anahtarının nasıl belirleneceğini belirtir.

  • Business Primary Key (pk): _id değeri belirli bir alanın değerine ayarlanır.

    "parameter":{
    "primaryKeyInfo":{
    "type":"pk",
    "column":["id"]}
    }
  • Composite Primary Key (specific): _id değeri, Primary Key Delimiter tarafından belirtilen ayırıcı ile ayrılmış birden fazla alanın değerlerinin birleşimidir.

    Not

    Alan adları, writer tarafından yazılacak alanlardır. Kodsuz kullanıcı arayüzünde Configure Primary Key Columns listesi yalnızca Elasticsearch dizininde zaten mevcut olan alanları listeler.

    "parameter":{
    "primaryKeyInfo":{
    "type":"specific",
    "fieldDelimiter":",",
    "column":["col1","col2"]}
    }
  • No Primary Key (nopk): _id, veriler Elasticsearch'e yazıldığında sistem tarafından otomatik olarak oluşturulur.

    "primaryKeyInfo":{
    "type":"nopk"
    }

Evet

specific

esPartitionColumn

Elasticsearch yönlendirme parametresini ayarlayarak bölümlenmiş yazmayı etkinleştirip etkinleştirmeyeceğinizi belirtir.

  • Bölümlemeyi etkinleştirin: Belirtilen sütunların değerleri bir ayırıcı olmadan birleştirilir ve sonuç yönlendirme değeri olarak kullanılır. Verileri yazarken sistem belgeleri belirtilen parçaya ekler veya günceller. Bölümlemeyi etkinleştirirseniz bölüm sütunlarını belirtmeniz gerekir.

    {    "esPartitionColumn": [
            {
                "name":"col1",
                "comment":"xx",
                "type":"STRING"
                }
            ],
        }
  • Bu parametreyi yapılandırmazsanız varsayılan olarak yönlendirme için _id kullanılır. Bu, belgelerin eşit şekilde dağıtılmasına yardımcı olur ve veri eğrilmesini önler.

Hayır

false

enableWriteNull

Kaynaktaki null alanların Elasticsearch'e yazılıp yazılmayacağını belirtir. Geçerli değerler:

  • true: Null alanları yazar. Senkronizasyondan sonra Elasticsearch'teki karşılık gelen alanın değeri null olur.

  • false: Null alanları yazmaz. Alan Elasticsearch belgesinde görünmez.

Hayır

true

Ek 2: Dizilerin Elasticsearch'e yazılması

Kaynak verileri iki yöntemden birini kullanarak Elasticsearch'e dizi olarak yazabilirsiniz.

  • JSON biçimindeki verileri ayrıştırma

    Örneğin, kaynak veri "[1,2,3,4,5]" ise json_array=true ayarını yaparak verileri ayrıştırın. Ardından veriler dizi olarak Elasticsearch'e yazılır.

    "parameter" : {
      {
        "name":"docs_1",
        "type":"keyword",
        "json_array":true
      }
    }
  • Ayırıcı kullanarak verileri ayrıştırma

    Örneğin, kaynak veri "1,2,3,4,5" ise splitter="," ayarını yaparak verileri ayrıştırın. Ardından veriler dizi olarak Elasticsearch'e yazılır.

    Not

    Splitter parametresi görev için genel olduğundan bir görev yalnızca bir ayırıcıyı destekler. Bu nedenle birden fazla dizi alanı için farklı ayırıcılar yapılandıramazsınız. Örneğin, kaynak verilerinizde col1="1,2,3,4,5" ve col2="6-7-8-9-10" sütunları varsa her sütun için ayrı bir ayırıcı yapılandıramazsınız.

    "parameter" : {
          "column": [
            {
              "name": "docs_2",
              "array": true,
              "type": "long"
            }
          ],
          "splitter":","// Note: The splitter parameter must be at the same level as the column parameter.
    }

Ek 3: Senaryo örnekleri

Senaryo 1: Tam veri çekme

  • Arka plan: Tüm bir Elasticsearch belgesini tek bir alana çeker.

  • Örnek yapılandırma:

    
    ## reader: Original data in Elasticsearch
    "hits": [
        {
            "_index": "mutiltest_1",
            "_type": "_doc",
            "_id": "IXgdO4MB4GR_1DmrjTXP",
            "_score": 1.0,
            "_source": {
                "feature1": "value1",
                "feature2": "value2",
                "feature3": "value3"
            }
        }]
    
    ## Data Integration Elasticsearch reader configuration
    "parameter": {
      "column": [
          "content"
      ],
      "full":true
    }
    
    ## writer result: Writes one row and one column to the destination.
    {"_index":"mutiltest_1","_type":"_doc","_id":"IXgdO4MB4GR_1DmrjTXP","_source":{"feature1":"value1","feature2":"value2","feature3":"value3"},"sort":["IXgdO4MB4GR_1DmrjTXP"]}

Senaryo 2: İç içe geçmiş veya nesne alanı özelliklerini senkronize etme

  • Arka plan: Bir object veya nested alanının özelliklerine erişmek için bir yol kullanır.

  • Sözdizimi:

    • property

    • property.sub-property

    • property[0].sub-property

  • Kod düzenleyici yapılandırması:

    "multi":{
        "multi":true
    }
    Not

    Bu özellik kodsuz kullanıcı arayüzünde desteklenmez.

  • Örnek yapılandırma:

    ## reader: Original data in Elasticsearch
    "hits": [
        {
            "_index": "mutiltest_1",
            "_type": "_doc",
            "_id": "7XAOOoMB4GR_1Dmrrust",
            "_score": 1.0,
            "_source": {
                "level1": {
                    "level2": [
                        {
                            "level3": "testlevel3_1"
                        },
                        {
                            "level3": "testlevel3_2"
                        }
                    ]
                }
            }
        }
    ]
    ## Data Integration Elasticsearch reader configuration
    "parameter": {
      "column": [
          "level1",
          "level1.level2",
          "level1.level2[0]",
          "level1.level2.level3"
      ],
      "multi":{
            "multi":true
        }
    }
    
    ## writer result: 1 row, 4 columns
    column1(level1):            {"level2":[{"level3":"testlevel3_1"},{"level3":"testlevel3_2"}]}
    column2(level1.level2):     [{"level3":"testlevel3_1"},{"level3":"testlevel3_2"}]
    column3(level1.level2[0]):  {"level3":"testlevel3_1"}
    column4(level1.level2.level3):  null
    Not
    • Yoldaki bir üst düğüm bir dizi ise sonuç null olur. Örneğin, level1.level2.level3 alma işlemi level2 bir dizi olduğu için null döndürür. Özelliğe erişmek için level1.level2[0].level3 veya level1.level2[1].level3 gibi bir dizin belirtmeniz gerekir. level1.level2[*].level3 joker karakter sözdizimi desteklenmez.

    • Nokta (.) içeren anahtarlar desteklenmez. Örneğin, veri {"level1.level2":{"level3":"testlevel3_1"}} ise sonuç null olur.

Senaryo 3: Bir dizi özelliğini birden fazla satıra ayırma

  • Arka plan: Bire çok ilişkiler için her öğeyi ayrı bir satıra bölerek bir diziyi genişletebilirsiniz.

  • Sözdizimi: property[*].sub-property

  • Örnek etki: { "splitKey": [1, 2, 3, 4, 5] } gibi kaynak veriler, diziden her biri bir öğe içeren beş satıra dönüştürülür.

  • Kod düzenleyici yapılandırması:

    "multi":{   
           "multi":true,    
            "key": "headers"
    }
    Not
    • Kodsuz kullanıcı arayüzünde aynı etkiyi elde etmek için split multi-row array column name parametresini ayarlayarak ilgili komut dosyası yapılandırmasını otomatik olarak oluşturabilirsiniz.

    • key ile belirtilen özelliğin değeri bir liste olmalıdır. Aksi takdirde hata oluşur.

  • Örnek yapılandırma:

    ## reader: Original data in Elasticsearch
    [
        {
            "_index": "lmtestjson",
            "_type": "_doc",
            "_id": "nhxmIYMBKDL4VkVLyXRN",
            "_score": 1.0,
            "_source": {
                "headers": [
                    {
                        "remoteip": "192.0.2.1"
                    },
                    {
                        "remoteip": "192.0.2.2"
                    }
                ]
            }
        },
        {
            "_index": "lmtestjson",
            "_type": "_doc",
            "_id": "wRxsIYMBKDL4VkVLcXqf",
            "_score": 1.0,
            "_source": {
                "headers": [
                    {
                        "remoteip": "192.0.2.3"
                    },
                    {
                        "remoteip": "192.0.2.4"
                    }
                ]
            }
        }
    ]
    ## Data Integration Elasticsearch reader configuration
    {
       "column":[
          "headers[*].remoteip"
      ]
      "multi":{
          "multi":true,
          "key": "headers"
      }
    }
    
    ## writer result: 4 rows
    192.0.2.1
    192.0.2.2
    192.0.2.3
    192.0.2.4

Senaryo 4: Dizi özelliklerini yinelemesiz hale getirme ve birleştirme

  • Arka plan: Dizi öğelerini yinelenmeyen hale getirir ve virgülle ayrılmış bir dizede birleştirir. Bu işlem name1.name2 gibi alt özelliklerle de çalışır. Yinelenmeme işlemi her öğenin toString() sonucuna dayanır.

  • Sözdizimi: property[].

    Sütun adında [] bulunması bu yinelenmeme ve birleştirme işlemini tetikler.

  • Kod düzenleyici yapılandırması:

    "multi":{
        "multi":true
    }
    Not

    Bu özellik kodsuz kullanıcı arayüzünde desteklenmez.

  • Örnek yapılandırma:

    ## reader: Original data in Elasticsearch
    "hits": [
    {
        "_index": "mutiltest_1",
        "_type": "_doc",
        "_id": "4nbUOoMB4GR_1Dmryj8O",
        "_score": 1.0,
        "_source": {
            "feature1": [
                "value1",
                "value1",
                "value2",
                "value2",
                "value3"
            ]
        }
    }
    ]
    ## Data Integration Elasticsearch reader configuration
    "parameter": {
      "column":[
            "feature1[]"
      ],
      "multi":{
            "multi":true
        }
    }
    
    ## writer result: 1 row, 1 column
    "value1,value2,value3"

Senaryo 5: Birden fazla özelliği seçici olarak senkronize etme

  • Arka plan: Belirtilen listeden ilk boş olmayan özellik değerini döndürür. Tüm özellikler null veya yoksa null döndürülür.

  • Sözdizimi: property1|property2|...

    Sütun adında dikey çizgi (|) karakterinin bulunması bu çoklu özellik seçimini tetikler.

  • Kod düzenleyici yapılandırması:

    "multi":{    
        "multi":true
    }
    Not

    Bu özellik kodsuz kullanıcı arayüzünde desteklenmez.

  • Örnek yapılandırma:

    ## reader: Original data in Elasticsearch
    "hits": [
        {
            "_index": "mutiltest_1",
            "_type": "_doc",
            "_id": "v3ShOoMB4GR_1DmrZN22",
            "_score": 1.0,
            "_source": {
                "feature1": "feature1",
                "feature2": [
                    1,
                    2,
                    3
                ],
                "feature3": {
                    "child": "feature3"
                }
            }
        }]
    
    ## Data Integration Elasticsearch reader configuration
    "parameter": {
      "column":[
            "feature1|feature2|feature3"
      ],
      "multi":{
            "multi":true
        }
    }
    
    ## writer result: 1 row, 1 column
    "feature1"

Senaryo 6: Birden fazla özelliği birleştirme ve senkronize etme

  • Arka plan: Birden fazla özellik değerini tek bir virgülle ayrılmış dizede birleştirir.

  • Sözdizimi: property1,property2,...

    Sütun adında virgül (,) bulunması bu çoklu özellik birleştirme işlemini tetikler.

  • Kod düzenleyici yapılandırması:

    "multi":{
        "multi":true
    }
    Not

    Bu özellik kodsuz kullanıcı arayüzünde desteklenmez.

  • Örnek yapılandırma:

    ## reader: Original data in Elasticsearch
    "hits": [
        {
            "_index": "mutiltest_1",
            "_type": "_doc",
            "_id": "v3ShOoMB4GR_1DmrZN22",
            "_score": 1.0,
            "_source": {
                "feature1": "feature1",
                "feature2": [
                    1,
                    2,
                    3
                ],
                "feature3": {
                    "child": "feature3"
                }
            }
        }]
    ## Data Integration Elasticsearch reader configuration
    "parameter": {
      "column":[
            "feature1,feature2,feature3"
      ],
      "multi":{
            "multi":true
        }
    }
    
    ## writer result: 1 row, 1 column
    "feature1,[1,2,3],{\"child\":\"feature3\"}"

Başvurular

Data Integration birçok başka veri kaynağını destekler. Tam liste için bkz. Desteklenen veri kaynakları ve senkronizasyon çözümleri.