डेटाबेस कनेक्टर को डिप्लॉय करना

चेतावनी: Cloud Search रेफ़रंस कनेक्टर, सैंपल कोड के तौर पर "जैसे हैं" के तौर पर दिए गए हैं, ताकि आप काम करने वाले कनेक्टर बनाने में उनका इस्तेमाल कर सकें. इस सैंपल कोड को कॉन्सेप्ट के सबूत या प्रोडक्शन एनवायरमेंट में इस्तेमाल करने से पहले, अच्छी तरह से कस्टमाइज़ेशन और टेस्टिंग की ज़रूरत है. प्रोडक्शन में इस्तेमाल के लिए, हमारा सुझाव है कि हमारे किसी Cloud Search पार्टनर से मदद लें. सही Cloud Search पार्टनर ढूंढने में मदद के लिए, अपने Google खाता मैनेजर से संपर्क करें.

अपने संगठन के डेटाबेस में मौजूद डेटा को खोजने और इंडेक्स करने के लिए, Google Cloud Search सेट अप किया जा सकता है. इसके लिए, Google Cloud Search डेटाबेस कनेक्टर का इस्तेमाल किया जा सकता है.

ज़रूरी बातें

आपके पास ऐसे किसी भी माहौल में Cloud Search डेटाबेस कनेक्टर को इंस्टॉल करने और चलाने का विकल्प होता है जहां Java ऐप्लिकेशन चल सकते हैं. हालांकि, इसके लिए ज़रूरी है कि कनेक्टर के पास इंटरनेट और डेटाबेस, दोनों का ऐक्सेस हो.

सिस्टम के लिए ज़रूरी शर्तें

सिस्टम के लिए ज़रूरी शर्तें
ऑपरेटिंग सिस्टम Windows या Linux
SQL डेटाबेस ऐसा कोई भी एसक्यूएल डेटाबेस जिसमें JDBC 4.0 या उसके बाद के वर्शन वाला ड्राइवर हो. इसमें ये शामिल हैं:
  • MS SQL सर्वर (2008, 2012, 2014, 2016)
  • Oracle (11 ग्रा॰, 12c)
  • Google क्लाउड SQL
  • MySQL
सॉफ़्टवेयर कनेक्टर के लिए JDBC ड्राइवर, जिसका इस्तेमाल डेटाबेस ऐक्सेस करने के लिए किया जा सकता है (अलग से डाउनलोड और इंस्टॉल किया गया)

कनेक्टर को डिप्लॉय करें

इस तरीके में, कनेक्टर को इंस्टॉल करने और तय किए गए डेटाबेस को इंडेक्स करने के लिए, इसे कॉन्फ़िगर करने का तरीका बताया गया है. साथ ही, Cloud Search के उपयोगकर्ताओं को नतीजे दिखाने के लिए भी तरीका बताया गया है.

ज़रूरी शर्तें

Cloud Search डेटाबेस कनेक्टर को डिप्लॉय करने से पहले, यह जानकारी इकट्ठा करें:

पहला चरण. डेटाबेस कनेक्टर सॉफ़्टवेयर डाउनलोड करना और बनाना

  1. GitHub से कनेक्टर रिपॉज़िटरी को क्लोन करें.
    $ git clone https://github.com/google-cloudsearch/database-connector.git
    $ cd database-connector
  2. कनेक्टर का मनपसंद वर्शन देखें:
    $ git checkout tags/v1-0.0.3
  3. कनेक्टर बनाएं.
    $ mvn package
    कनेक्टर बनाते समय जांच छोड़ने के लिए, mvn package -DskipTests का इस्तेमाल करें.
  4. कनेक्टर ZIP फ़ाइल को अपनी लोकल इंस्टॉलेशन डायरेक्ट्री में कॉपी करें और उसे अनज़िप करें:
    $ cp target/google-cloudsearch-database-connector-v1-0.0.3.zip installation-dir
    $ cd installation-dir
    $ unzip google-cloudsearch-database-connector-v1-0.0.3.zip
    $ cd google-cloudsearch-database-connector-v1-0.0.3

दूसरा चरण. डेटाबेस कनेक्टर को कॉन्फ़िगर करना

  1. एक टेक्स्ट फ़ाइल बनाएं और इसे connector-config.properties (डिफ़ॉल्ट) या इससे मिलता-जुलता नाम दें. Google का सुझाव है कि आप कॉन्फ़िगरेशन फ़ाइलों को .properties या .config एक्सटेंशन की मदद से नाम दें. साथ ही, फ़ाइल को उसी डायरेक्ट्री में रखें जिसमें कनेक्टर है. अगर किसी अलग नाम या पाथ का इस्तेमाल किया जाता है, तो कनेक्टर को चलाते समय पाथ ज़रूर बताएं.
  2. फ़ाइल के कॉन्टेंट में पैरामीटर को की/वैल्यू पेयर के तौर पर जोड़ें. कॉन्फ़िगरेशन फ़ाइल में डेटा सोर्स को ऐक्सेस करने, डेटाबेस ऐक्सेस करने, डेटाबेस में फ़ुल ट्रेवर्सल एसक्यूएल स्टेटमेंट, कॉन्टेंट फ़ील्ड टाइटल, और कॉलम की परिभाषाओं के पैरामीटर के बारे में बताना ज़रूरी है. वैकल्पिक पैरामीटर की मदद से, कनेक्टर के काम करने के अन्य तरीके को भी कॉन्फ़िगर किया जा सकता है. उदाहरण के लिए:
    # Required parameters for data source access
    api.sourceId=1234567890abcdef
    api.identitySourceId=0987654321lmnopq
    api.serviceAccountPrivateKeyFile=./PrivateKey.json
    #
    # Required parameters for database access
    db.url=jdbc:mysql://localhost:3306/mysql_test
    db.user=root
    db.password=passw0rd
    #
    # Required full traversal SQL statement parameter
    db.allRecordsSql=select customer_id, first_name, last_name, phone, change_timestamp from address_book
    #
    # Required parameters for column definitions and URL format
    db.allColumns=customer_id, first_name, last_name, phone, change_timestamp
    db.uniqueKeyColumns=customer_id
    url.columns=customer_id
    #
    # Required content field parameter
    contentTemplate.db.title=customer_id
    #
    # Optional parameters to set ACLs to "entire domain" access
    defaultAcl.mode=fallback
    defaultAcl.public=true
    #
    # Optional parameters for schedule traversals
    schedule.traversalIntervalSecs=36000
    schedule.performTraversalOnStart=true
    schedule.incrementalTraversalIntervalSecs=3600
    

    डेटाबेस के पैरामीटर की ज़्यादा जानकारी के लिए, इस लेख के आखिर में दिए गए कॉन्फ़िगरेशन पैरामीटर का रेफ़रंस देखें.

    सभी Cloud Search कनेक्टर के लिए आम तौर पर इस्तेमाल होने वाले पैरामीटर, जैसे कि मेटाडेटा कॉन्फ़िगरेशन, तारीख और समय के फ़ॉर्मैट, और एसीएल विकल्पों के बारे में जानने के लिए, Google के दिए गए कनेक्टर पैरामीटर पर जाएं.

    लागू होने पर, traversal SQL क्वेरी पैरामीटर में स्कीमा ऑब्जेक्ट की प्रॉपर्टी तय करें. आम तौर पर, SQL स्टेटमेंट में उपनाम जोड़ा जा सकता है. उदाहरण के लिए, अगर आपके पास फ़िल्म का डेटाबेस है और डेटा सोर्स स्कीमा में "ActorName" नाम की प्रॉपर्टी की परिभाषा शामिल है, तो SQL स्टेटमेंट में यह फ़ॉर्म हो सकता है: SELECT …, last_name AS ActorName, … FROM … .

तीसरा चरण. डेटाबेस कनेक्टर चलाएं

नीचे दिए गए उदाहरण में यह माना गया है कि ज़रूरी कॉम्पोनेंट, Linux सिस्टम के लोकल डायरेक्ट्री में मौजूद होते हैं.

कमांड लाइन से कनेक्टर चलाने के लिए, यह कमांड डालें:

java \
   -cp "google-cloudsearch-database-connector-v1-0.0.3.jar:mysql-connector-java-5.1.41-bin.jar" \
   com.google.enterprise.cloudsearch.database.DatabaseFullTraversalConnector \
   [-Dconfig=mysql.config]

जगह:

  • google-cloud-search-database-connector-v1-0.0.3.jar, डेटाबेस कनेक्टर .जार फ़ाइल है
  • mysql-connector-java-5.1.41-bin.jar वह JDBC ड्राइवर है जिसका इस्तेमाल डेटाबेस को ऐक्सेस करने के लिए किया जा रहा है
  • mysql.config, कस्टम नाम वाली कॉन्फ़िगरेशन फ़ाइल है. यह पक्का करने के लिए कि कनेक्टर आपकी कॉन्फ़िगरेशन फ़ाइल की पहचान करता है, कमांड लाइन पर उसका पाथ बताएं. ऐसा न होने पर, कनेक्टर आपकी लोकल डायरेक्ट्री में मौजूद connector-config.properties को डिफ़ॉल्ट फ़ाइल नाम के तौर पर इस्तेमाल करता है.

कनेक्टर कॉन्फ़िगरेशन से जुड़ी गड़बड़ियों का पता चलते ही, उन्हें रिपोर्ट करता है. कुछ गड़बड़ियां तब रिपोर्ट की जाती हैं, जब कनेक्टर शुरू करता है. जैसे, जब किसी डेटाबेस कॉलम को रिकॉर्ड कॉन्टेंट (db.allColumns में) के हिस्से के रूप में तय किया जाता है, लेकिन कॉलम का इस्तेमाल डेटाबेस (db.allRecordsSql में) की ट्रैवर्सल एसक्यूएल क्वेरी में नहीं किया जाता. दूसरी गड़बड़ियों का पता सिर्फ़ तब लगाया और रिपोर्ट किया जाता है, जब कनेक्टर पहले ट्रेवर्सल के लिए डेटाबेस ऐक्सेस करने की कोशिश करता है, जैसे कि अमान्य SQL स्टेटमेंट.

कॉन्फ़िगरेशन पैरामीटर का रेफ़रंस

डेटा सोर्स के ऐक्सेस पैरामीटर

सेटिंग पैरामीटर
डेटा सोर्स आईडी api.sourceId = source-ID

ज़रूरी है. वह Cloud Search सोर्स आईडी जिसे Google Workspace एडमिन ने सेट अप किया है.

पहचान स्रोत आईडी api.identitySourceId = identity-source-ID

एसीएल के लिए, बाहरी उपयोगकर्ताओं और ग्रुप का इस्तेमाल करना ज़रूरी है. Cloud Search आइडेंटिटी सोर्स का आईडी, जिसे Google Workspace एडमिन ने सेट अप किया है.

सेवा खाता api.serviceAccountPrivateKeyFile = path-to-private-key

ज़रूरी है. Cloud Search सेवा खाते की कुंजी फ़ाइल का वह पाथ जिसे Google Workspace एडमिन ने बनाया है.

डेटाबेस ऐक्सेस पैरामीटर

सेटिंग पैरामीटर
डेटाबेस यूआरएल db.url = database-URL

ज़रूरी है. ऐक्सेस किए जाने वाले डेटाबेस का पूरा पाथ, जैसे कि jdbc:mysql://127.0.0.1/dbname.

डेटाबेस उपयोगकर्ता नाम और पासवर्ड db.user = username
db.password = password

ज़रूरी है. एक मान्य उपयोगकर्ता नाम और पासवर्ड, जिसका इस्तेमाल कनेक्टर, डेटाबेस को ऐक्सेस करने के लिए करता है. इस डेटाबेस उपयोगकर्ता के पास, पढ़े जा रहे डेटाबेस के काम के रिकॉर्ड को पढ़ने का ऐक्सेस होना चाहिए.

JDBC ड्राइवर db.driverClass = oracle.jdbc.OracleDriver

सिर्फ़ तब ज़रूरी है, जब क्लास पाथ में JDBC 4.0 ड्राइवर पहले से तय न किया गया हो.

Traversal SQL क्वेरी पैरामीटर

कनेक्टर, कॉन्फ़िगरेशन फ़ाइल में SQL SELECT क्वेरी के साथ डेटाबेस रिकॉर्ड को ट्रैवर्स करता है. आपको एक पूरी ट्रैवर्सल क्वेरी कॉन्फ़िगर करनी होगी; इंक्रीमेंटल ट्रैवर्सल के लिए क्वेरी वैकल्पिक हैं.

फ़ुल ट्रेवर्सल, इंडेक्स करने के लिए कॉन्फ़िगर किए गए हर डेटाबेस रिकॉर्ड को पढ़ता है. Cloud Search के लिए नए रिकॉर्ड को इंडेक्स करने और सभी मौजूदा रिकॉर्ड को फिर से इंडेक्स करने के लिए, पूरे ट्रैवर्सल की ज़रूरत होती है.

इंक्रीमेंटल ट्रैवर्सल, डेटाबेस में सिर्फ़ नए बदले गए डेटाबेस रिकॉर्ड और हाल की एंट्री को पढ़ता है और फिर से इंडेक्स करता है. इंक्रीमेंटल (बढ़ने वाले) ट्रैवर्सल, पूरे ट्रैवर्सल की तुलना में ज़्यादा बेहतर तरीके से काम कर सकते हैं. इंक्रीमेंटल ट्रेवर्सल का इस्तेमाल करने के लिए, आपके डेटाबेस में टाइमस्टैंप फ़ील्ड होने चाहिए, ताकि बदले गए रिकॉर्ड के बारे में पता चल सके.

कनेक्टर, इन ट्रैवर्सल को आपके ट्रैवर्सल शेड्यूल पैरामीटर में तय किए गए शेड्यूल के मुताबिक एक्ज़ीक्यूट करता है.

सेटिंग पैरामीटर
पूरी traversal क्वेरी db.allRecordsSql = SELECT column-1[, column-2,...] FROM database-name

ज़रूरी है. हर पूरे traversal के लिए क्वेरी चलती है.

कनेक्टर जिस कॉलम का नाम किसी भी क्षमता (कॉन्टेंट, यूनीक आईडी, एसीएल) में इस्तेमाल करेगा वह इस क्वेरी में मौजूद होना चाहिए. कनेक्टर, शुरू होने के दौरान गड़बड़ियों और चूक का पता लगाने के लिए, कुछ शुरुआती पुष्टि करता है. इस वजह से, सामान्य "SELECT * FROM ..." क्वेरी का इस्तेमाल न करें.

पूरे ट्रैवर्सल पेज पर नंबर डालना db.allRecordsSql.pagination = {none | offset}

इसकी वैल्यू यह हो सकती है:

  • कोई नहीं: पेज नंबर का इस्तेमाल न करें
  • offset: पंक्ति ऑफ़सेट के अनुसार पेज नंबर का इस्तेमाल करें

    ऑफ़सेट के हिसाब से पेज नंबर का इस्तेमाल करने के लिए, एसक्यूएल क्वेरी में शून्य से शुरू होने वाली लाइन ऑफ़सेट के लिए, प्लेसहोल्डर वाले सवाल का निशान (?) होना चाहिए. हर पूरे ट्रैवर्सल में, क्वेरी को बार-बार तब तक लागू किया जाता है, जब तक कोई नतीजा नहीं मिलता.

इंक्रीमेंटल ट्रैवर्सल क्वेरी db.incrementalUpdateSql = SELECT column-1[, column-2,...] FROM database-name WHERE last_update_time > ?

इंक्रीमेंटल ट्रेवर्सल को शेड्यूल करने के लिए ज़रूरी है.

क्वेरी में "?", टाइमस्टैंप वैल्यू के लिए एक ज़रूरी प्लेसहोल्डर है. कनेक्टर, इंक्रीमेंटल ट्रैवर्सल एसक्यूएल क्वेरी के बीच होने वाले बदलावों को ट्रैक करने के लिए, टाइमस्टैंप का इस्तेमाल करता है.

पिछली बार अपडेट किए जाने के समय के डेटाबेस के टाइमस्टैंप कॉलम को ट्रैक करने के लिए, SQL स्टेटमेंट में timestamp_column उपनाम जोड़ें. ऐसा न करने पर, कनेक्टर ट्रैवर्सल के मौजूदा टाइमस्टैंप का इस्तेमाल करें.

पहले इंक्रीमेंटल ट्रैवर्सल के लिए, कनेक्टर, कनेक्टर के शुरू होने के समय का इस्तेमाल करता है. पहले इंक्रीमेंटल ट्रैवर्सल के बाद, Cloud Search टाइमस्टैंप को सेव करता है, ताकि कनेक्टर के रीस्टार्ट होने से पिछले इंक्रीमेंटल ट्रैवर्सल टाइमस्टैंप को ऐक्सेस किया जा सके.

डेटाबेस का टाइम ज़ोन db.timestamp.timezone = America/Los_Angeles

यह डेटाबेस के टाइमस्टैंप के इस्तेमाल का टाइम ज़ोन बताता है. डेटाबेस टाइमस्टैंप, जोड़े गए नए रिकॉर्ड या बदले गए डेटाबेस के नए रिकॉर्ड की पहचान करने के लिए इस्तेमाल किया जाता है. डिफ़ॉल्ट रूप से, वह स्थानीय टाइम ज़ोन होता है जहां कनेक्टर चल रहा है.

Traversal एसक्यूएल क्वेरी के उदाहरण

  • इंडेक्स करने के लिए, कर्मचारी के डेटाबेस में दिलचस्पी के सभी रिकॉर्ड को पढ़ने वाली बेसिक पूरी ट्रैवर्सल क्वेरी:
    db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field \
        FROM employee
  • ऑफ़सेट के हिसाब से, पेज पर नंबर डालना तय करें और पूरे ट्रेवर्सल को कई क्वेरी में बांट दें.

    SQL सर्वर 2012 या Oracle 12c (मानक SQL 2008 सिंटैक्स) के लिए:

    db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field \
        FROM employee \
        ORDER BY customer_id OFFSET ? ROWS FETCH FIRST 1000 ROWS ONLY
    db.allRecordsSql.pagination = offset
    

    या MySQL या Google Cloud SQL के लिए:

    db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field \
        FROM employee \
        ORDER BY customer_id LIMIT 1000 OFFSET ?
    db.allRecordsSql.pagination = offset
  • पूरी ट्रैवर्सल क्वेरी, जो उपनाम के साथ अलग-अलग ACL लागू करती है:
    db.allRecordsSql = SELECT customer_id, first_name, last_name,  employee_id, interesting_field, last_update_time, \
         permitted_readers AS readers_users, \
         denied_readers AS denied_users, \
         permitted_groups AS readers_groups, \
         denied_groups AS denied_groups \
         FROM employee
  • बेसिक इंक्रीमेंटल ट्रैवर्सल क्वेरी:
    db.incrementalUpdateSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field, last_update_time \
         FROM employee \
         WHERE last_update_time > ?
  • इंक्रीमेंटल ट्रैवर्सल क्वेरी, जो उपनाम के साथ अलग-अलग ACL लागू करती है:
    db.incrementalUpdateSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field, last_update_time, \
         permitted_readers AS readers_users, \
         denied_readers AS denied_users, \
         permitted_groups AS readers_groups, \
         denied_groups AS denied_groups \
         FROM employee \
         WHERE last_update_time > ?
  • इंक्रीमेंटल ट्रैवर्सल क्वेरी, जो मौजूदा समय के बजाय डेटाबेस टाइमस्टैंप का इस्तेमाल करती है:
    db.incrementalUpdateSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field, \
         last_update_time AS timestamp_column \
         FROM employee \
         WHERE last_update_time > ?

कॉलम की परिभाषा के पैरामीटर

नीचे दिए गए पैरामीटर उन कॉलम के बारे में बताते हैं जिनका इस्तेमाल आप ट्रैवर्सल स्टेटमेंट में करते हैं और हर रिकॉर्ड की खास तरह से पहचान करते हैं.

सेटिंग पैरामीटर
सभी कॉलम db.allColumns = column-1, column-2, ...column-N

ज़रूरी है. यह उन सभी कॉलम की पहचान करता है जो डेटाबेस को ऐक्सेस करते समय, SQL क्वेरी में ज़रूरी होते हैं. इस पैरामीटर के साथ तय किए गए कॉलम, क्वेरी में साफ़ तौर पर रेफ़र किए जाने चाहिए. कॉलम की परिभाषा के हर दूसरे पैरामीटर की तुलना, कॉलम के इस सेट से की जाती है.

उदाहरण:

db.allColumns = customer_id, first_name, last_name, phone, change_timestamp
यूनीक कुंजी कॉलम db.uniqueKeyColumns = column-1[, column-2]

ज़रूरी है. यह कॉलम, यूनीक वैल्यू वाला एक डेटाबेस कॉलम दिखाता है. इसके अलावा, यह ऐसे कॉलम के कॉम्बिनेशन से बना होता है जिनकी वैल्यू एक साथ यूनीक आईडी तय करती हैं.

Cloud Search के लिए, खोजे जा सकने वाले हर दस्तावेज़ के डेटा सोर्स में एक यूनीक आइडेंटिफ़ायर होना ज़रूरी है. आपके पास कॉलम की वैल्यू से, हर डेटाबेस रिकॉर्ड के लिए एक यूनीक आईडी तय करने की सुविधा होनी चाहिए. अगर अलग-अलग डेटाबेस पर कई कनेक्टर चलाए जाते हैं, लेकिन एक ही डेटासेट में इंडेक्स किए जाते हैं, तो पक्का करें कि आपने सभी दस्तावेज़ों में एक यूनीक आईडी तय किया हो.

उदाहरण:

db.uniqueKeyColumns = customer_id
# or
db.uniqueKeyColumns = last_name, first_name
यूआरएल लिंक कॉलम url.columns = column-1[, column-2]

ज़रूरी है. इससे क्लिक किए जा सकने वाले खोज के नतीजे के लिए इस्तेमाल होने वाले यूआरएल के लिए, इस्तेमाल किए गए कॉलम के एक या एक से ज़्यादा मान्य और तय किए गए नाम के बारे में जानकारी मिलती है. ऐसे डेटाबेस जिनमें हर डेटाबेस रिकॉर्ड से जुड़ा कोई काम का यूआरएल नहीं होता है उनमें हर रिकॉर्ड के लिए, एक स्टैटिक लिंक का इस्तेमाल किया जा सकता है.

हालांकि, अगर कॉलम की वैल्यू हर रिकॉर्ड के लिए एक मान्य लिंक तय करती हैं, तो व्यू यूआरएल कॉलम और फ़ॉर्मैट कॉन्फ़िगरेशन वैल्यू बताई जानी चाहिए.

यूआरएल का फ़ॉर्मैट url.format = https://www.example.com/{0}

यह व्यू यूआरएल का फ़ॉर्मैट तय करता है. नंबर वाले पैरामीटर, db.columns में दिए गए कॉलम को रेफ़र करते हैं. ये कॉलम, शून्य से शुरू होते हैं.

अगर तय नहीं किया गया है, तो डिफ़ॉल्ट वैल्यू "{0}." होती है

उदाहरण इस टेबल में दिए गए हैं.

यूआरएल के लिए, कोड में बदले गए कॉलम का प्रतिशत url.columnsToEscape = column-1[, column-2]

db.columns के कॉलम के बारे में बताता है, जिनकी वैल्यू को फ़ॉर्मैट की गई यूआरएल स्ट्रिंग में शामिल करने से पहले, प्रतिशत के हिसाब से कोड में बदला गया होगा.

यूआरएल कॉलम के उदाहरण

ट्रैवर्सल क्वेरी में इस्तेमाल किए जाने वाले कॉलम और व्यू यूआरएल का फ़ॉर्मैट तय करने के लिए:

  • डेटाबेस रिकॉर्ड की किसी भी वैल्यू का इस्तेमाल न करने वाले स्टैटिक यूआरएल का इस्तेमाल करने के लिए:
    url.format = https://www.example.com
  • सिंगल कॉलम की वैल्यू, जो व्यू यूआरएल है का इस्तेमाल करने के लिए:
    url.format = {0}
    url.columns = customer_id
  • पोज़िशन {0} पर मौजूद व्यू यूआरएल में बदलने के लिए, किसी एक कॉलम की वैल्यू का इस्तेमाल करने के लिए:
    url.format = https://www.example.com/customer/id={0}
    url.columns = customer_id
    url.columnsToEscape = customer_id
  • व्यू यूआरएल बनाने के लिए, एक से ज़्यादा कॉलम की वैल्यू का इस्तेमाल करने के लिए (कॉलम क्रम के हिसाब से होते हैं):
    url.format = {1}/customer={0}
    url.columns = customer_id, linked_url
    url.columnsToEscape = customer_id

कॉन्टेंट फ़ील्ड

कॉन्टेंट के विकल्पों का इस्तेमाल करके, यह तय करें कि किस रिकॉर्ड वैल्यू को खोजने लायक कॉन्टेंट का हिस्सा बनाया जाना चाहिए.

सेटिंग पैरामीटर
सबसे अच्छी क्वालिटी वाला खोज कॉलम contentTemplate.db.title = column-name

ज़रूरी है. खोज को इंडेक्स करने और नतीजे की प्राथमिकता तय करने के लिए सबसे अच्छी क्वालिटी वाला कॉलम.

खोज के लिए कॉलम की प्राथमिकता तय करना contentTemplate.db.quality.high = column-1[, column-2...]
contentTemplate.db.quality.medium = column-1[, column-2...]
contentTemplate.db.quality.low = column-1[, column-2...]

कॉन्टेंट के कॉलम (contentTemplate.db.title के लिए कॉलम सेट को छोड़कर) को ज़्यादा, मीडियम या कम खोज क्वालिटी वाले फ़ील्ड के तौर पर तय करें. बिना वैल्यू वाले कॉलम, डिफ़ॉल्ट रूप से कम पर सेट होते हैं.

सामग्री डेटा कॉलम db.contentColumns = column-1[, column-2...]

डेटाबेस में कॉन्टेंट कॉलम तय करें. इन्हें दस्तावेज़ के कॉन्टेंट के तौर पर फ़ॉर्मैट करके, Cloud Search पर अपलोड किया जाता है.

अगर कोई वैल्यू नहीं दी जाती है, तो डिफ़ॉल्ट वैल्यू "*" होती है. इससे पता चलता है कि सभी कॉलम का इस्तेमाल कॉन्टेंट के लिए किया जाना चाहिए.

ब्लॉब कॉलम db.blobColumn = column-name

दस्तावेज़ के कॉन्टेंट के लिए इस्तेमाल करने के लिए, कॉन्टेंट कॉलम के कॉम्बिनेशन के बजाय सिंगल ब्लॉब कॉलम का नाम बताएं.

अगर ब्लॉब कॉलम की जानकारी दी गई है, तो कॉन्टेंट कॉलम को भी तय करने पर यह गड़बड़ी माना जाएगा. हालांकि, ब्लॉब कॉलम के साथ-साथ मेटाडेटा और स्ट्रक्चर्ड डेटा कॉलम की परिभाषाओं की भी अनुमति है.