एलास्टिकसर्च चीटशीट: आवश्यक कमांड्स और टिप्स
एलास्टिकसर्च कमांड्स फॉर सर्च, इंडेक्सिंग एंड एनालिटिक्स
एलास्टिकसर्च एक शक्तिशाली वितरित खोज और विश्लेषण इंजन है जो Apache Lucene पर बनाया गया है। यह व्यापक चिट्ठा एलास्टिकसर्च क्लस्टरों के साथ काम करने के लिए आवश्यक कमांड्स, सर्वोत्तम प्रथाओं, और त्वरित संदर्भों को कवर करता है।

नोट: इस गाइड में अधिकांश उदाहरण cURL का उपयोग करके HTTP अनुरोध करते हैं। अगर आप cURL के नए हैं या उन्नत विकल्पों के लिए एक त्वरित संदर्भ की आवश्यकता है, तो हमारी cURL चिट्ठा पर जाएँ, जिसमें विस्तृत कमांड-लाइन HTTP अनुरोध तकनीकों का विवरण दिया गया है।
क्लस्टर प्रबंधन
क्लस्टर स्वास्थ्य की जांच करें
इस अनुभाग में सभी कमांड्स cURL का उपयोग करके Elasticsearch के REST API के साथ इंटरैक्ट करते हैं। आप इन अनुरोधों को अतिरिक्त हेडर्स, प्रमाणिकरण, और अन्य विकल्पों के साथ अनुकूलित कर सकते हैं जैसे आवश्यक हो।
# बुनियादी स्वास्थ्य जांच
curl -X GET "localhost:9200/_cluster/health?pretty"
# शार्ड जानकारी के साथ विस्तृत क्लस्टर स्वास्थ्य
curl -X GET "localhost:9200/_cluster/health?level=shards&pretty"
# नोड जानकारी की जांच करें
curl -X GET "localhost:9200/_cat/nodes?v"
# क्लस्टर सेटिंग्स की जांच करें
curl -X GET "localhost:9200/_cluster/settings?pretty"
नोड ऑपरेशन्स
# सभी नोड्स की सूची
curl -X GET "localhost:9200/_cat/nodes?v&h=name,node.role,heap.percent,ram.percent,cpu,load_1m"
# नोड स्टैट्स
curl -X GET "localhost:9200/_nodes/stats?pretty"
# गर्म धागे (ट्रबलशूटिंग)
curl -X GET "localhost:9200/_nodes/hot_threads"
इंडेक्स प्रबंधन
इंडेक्स बनाएँ और हटाएँ
# इंडेक्स बनाएँ
curl -X PUT "localhost:9200/my_index?pretty"
# सेटिंग्स के साथ इंडेक्स बनाएँ
curl -X PUT "localhost:9200/my_index" -H 'Content-Type: application/json' -d'
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1
}
}
'
# इंडेक्स हटाएँ
curl -X DELETE "localhost:9200/my_index?pretty"
# सभी इंडेक्सों की सूची
curl -X GET "localhost:9200/_cat/indices?v"
# इंडेक्स सांख्यिकी
curl -X GET "localhost:9200/my_index/_stats?pretty"
इंडेक्स मैपिंग्स
# मैपिंग परिभाषित करें
curl -X PUT "localhost:9200/products" -H 'Content-Type: application/json' -d'
{
"mappings": {
"properties": {
"name": { "type": "text" },
"price": { "type": "float" },
"created_at": { "type": "date" },
"tags": { "type": "keyword" },
"description": {
"type": "text",
"analyzer": "english"
}
}
}
}
'
# मैपिंग प्राप्त करें
curl -X GET "localhost:9200/products/_mapping?pretty"
# मैपिंग अपडेट करें (फील्ड जोड़ें)
curl -X PUT "localhost:9200/products/_mapping" -H 'Content-Type: application/json' -d'
{
"properties": {
"category": { "type": "keyword" }
}
}
'
इंडेक्स टेम्पलेट्स
# इंडेक्स टेम्पलेट बनाएँ
curl -X PUT "localhost:9200/_index_template/logs_template" -H 'Content-Type: application/json' -d'
{
"index_patterns": ["logs-*"],
"template": {
"settings": {
"number_of_shards": 1
},
"mappings": {
"properties": {
"timestamp": { "type": "date" },
"message": { "type": "text" },
"level": { "type": "keyword" }
}
}
}
}
'
# टेम्पलेट्स की सूची
curl -X GET "localhost:9200/_index_template?pretty"
दस्तावेज़ ऑपरेशन्स (CRUD)
दस्तावेज़ बनाएँ
# स्वचालित रूप से उत्पन्न ID के साथ दस्तावेज़ इंडेक्स करें
curl -X POST "localhost:9200/products/_doc?pretty" -H 'Content-Type: application/json' -d'
{
"name": "लैपटॉप",
"price": 999.99,
"tags": ["इलेक्ट्रॉनिक्स", "कंप्यूटर"]
}
'
# विशिष्ट ID के साथ दस्तावेज़ इंडेक्स करें
curl -X PUT "localhost:9200/products/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{
"name": "लैपटॉप",
"price": 999.99
}
'
# बुल्क इंडेक्सिंग
curl -X POST "localhost:9200/_bulk?pretty" -H 'Content-Type: application/json' -d'
{ "index": { "_index": "products", "_id": "1" }}
{ "name": "लैपटॉप", "price": 999.99 }
{ "index": { "_index": "products", "_id": "2" }}
{ "name": "माउस", "price": 29.99 }
'
दस्तावेज़ पढ़ें
# ID द्वारा दस्तावेज़ प्राप्त करें
curl -X GET "localhost:9200/products/_doc/1?pretty"
# कई दस्तावेज़ प्राप्त करें
curl -X GET "localhost:9200/_mget?pretty" -H 'Content-Type: application/json' -d'
{
"docs": [
{ "_index": "products", "_id": "1" },
{ "_index": "products", "_id": "2" }
]
}
'
# दस्तावेज़ मौजूद है या नहीं जांचें
curl -I "localhost:9200/products/_doc/1"
दस्तावेज़ अपडेट करें
# दस्तावेज़ अपडेट करें
curl -X POST "localhost:9200/products/_update/1?pretty" -H 'Content-Type: application/json' -d'
{
"doc": {
"price": 899.99
}
}
'
# स्क्रिप्ट के साथ अपडेट करें
curl -X POST "localhost:9200/products/_update/1?pretty" -H 'Content-Type: application/json' -d'
{
"script": {
"source": "ctx._source.price *= params.discount",
"params": {
"discount": 0.9
}
}
}
'
# अपडेट या इन्सर्ट (अप्सर्ट)
curl -X POST "localhost:9200/products/_update/1?pretty" -H 'Content-Type: application/json' -d'
{
"doc": {
"price": 899.99
},
"doc_as_upsert": true
}
'
दस्तावेज़ हटाएँ
# ID द्वारा हटाएँ
curl -X DELETE "localhost:9200/products/_doc/1?pretty"
# क्वेरी द्वारा हटाएँ
curl -X POST "localhost:9200/products/_delete_by_query?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"match": {
"name": "old"
}
}
}
'
खोज क्वेरी
बुनियादी खोज
# सभी मिलान
curl -X GET "localhost:9200/products/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"match_all": {}
}
}
'
# मिलान क्वेरी
curl -X GET "localhost:9200/products/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"match": {
"name": "लैपटॉप"
}
}
}
'
# मल्टी-मिलान क्वेरी
curl -X GET "localhost:9200/products/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"multi_match": {
"query": "लैपटॉप गेमिंग",
"fields": ["name", "description"]
}
}
}
'
टर्म-लेवल क्वेरी
# टर्म क्वेरी (सटीक मिलान)
curl -X GET "localhost:9200/products/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"term": {
"tags": "इलेक्ट्रॉनिक्स"
}
}
}
'
# टर्म्स क्वेरी (कई मान)
curl -X GET "localhost:9200/products/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"terms": {
"tags": ["इलेक्ट्रॉनिक्स", "कंप्यूटर"]
}
}
}
'
# रेंज क्वेरी
curl -X GET "localhost:9200/products/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"range": {
"price": {
"gte": 100,
"lte": 1000
}
}
}
}
'
# एक्सिस्ट्स क्वेरी
curl -X GET "localhost:9200/products/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"exists": {
"field": "description"
}
}
}
'
बूलियन क्वेरी
# बूल क्वेरी (मस्ट, शुड, मस्ट_नॉट, फिल्टर)
curl -X GET "localhost:9200/products/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"bool": {
"must": [
{ "match": { "name": "लैपटॉप" }}
],
"filter": [
{ "range": { "price": { "gte": 500 }}}
],
"should": [
{ "term": { "tags": "गेमिंग" }}
],
"must_not": [
{ "term": { "tags": "रिफर्बिश्ड" }}
]
}
}
}
'
उन्नत खोज
# वाइल्डकार्ड क्वेरी
curl -X GET "localhost:9200/products/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"wildcard": {
"name": "lap*"
}
}
}
'
# फजी क्वेरी (टाइपो सहिष्णुता)
curl -X GET "localhost:9200/products/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"fuzzy": {
"name": {
"value": "लैपटोप",
"fuzziness": "AUTO"
}
}
}
}
'
# प्रीफिक्स क्वेरी
curl -X GET "localhost:9200/products/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"prefix": {
"name": "lap"
}
}
}
'
एग्रीगेशन्स
मेट्रिक एग्रीगेशन्स
# औसत, योग, न्यूनतम, अधिकतम
curl -X GET "localhost:9200/products/_search?pretty" -H 'Content-Type: application/json' -d'
{
"size": 0,
"aggs": {
"avg_price": { "avg": { "field": "price" }},
"max_price": { "max": { "field": "price" }},
"min_price": { "min": { "field": "price" }},
"total_sales": { "sum": { "field": "price" }}
}
}
'
# स्टैट्स एग्रीगेशन
curl -X GET "localhost:9200/products/_search?pretty" -H 'Content-Type: application/json' -d'
{
"size": 0,
"aggs": {
"price_stats": {
"stats": { "field": "price" }
}
}
}
'
बकेट एग्रीगेशन्स
# टर्म्स एग्रीगेशन (समूह बनाएँ)
curl -X GET "localhost:9200/products/_search?pretty" -H 'Content-Type: application/json' -d'
{
"size": 0,
"aggs": {
"popular_tags": {
"terms": {
"field": "tags",
"size": 10
}
}
}
}
'
# रेंज एग्रीगेशन
curl -X GET "localhost:9200/products/_search?pretty" -H 'Content-Type: application/json' -d'
{
"size": 0,
"aggs": {
"price_ranges": {
"range": {
"field": "price",
"ranges": [
{ "to": 50 },
{ "from": 50, "to": 100 },
{ "from": 100 }
]
}
}
}
}
'
# डेट हिस्टोग्राम
curl -X GET "localhost:9200/logs/_search?pretty" -H 'Content-Type: application/json' -d'
{
"size": 0,
"aggs": {
"logs_over_time": {
"date_histogram": {
"field": "timestamp",
"calendar_interval": "day"
}
}
}
}
'
नैस्टेड एग्रीगेशन्स
# नैस्टेड एग्रीगेशन्स
curl -X GET "localhost:9200/products/_search?pretty" -H 'Content-Type: application/json' -d'
{
"size": 0,
"aggs": {
"categories": {
"terms": { "field": "category" },
"aggs": {
"avg_price": {
"avg": { "field": "price" }
}
}
}
}
}
'
सॉर्टिंग और पेजिनेशन
# फील्ड द्वारा सॉर्ट करें
curl -X GET "localhost:9200/products/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": { "match_all": {} },
"sort": [
{ "price": { "order": "desc" }},
{ "_score": { "order": "desc" }}
]
}
'
# पेजिनेशन के साथ from/size
curl -X GET "localhost:9200/products/_search?pretty" -H 'Content-Type: application/json' -d'
{
"from": 0,
"size": 10,
"query": { "match_all": {} }
}
'
# गहरी पेजिनेशन के लिए सर्च एफ्टर
curl -X GET "localhost:9200/products/_search?pretty" -H 'Content-Type: application/json' -d'
{
"size": 10,
"query": { "match_all": {} },
"sort": [{ "price": "asc" }, { "_id": "asc" }],
"search_after": [100, "product_123"]
}
'
फ़ील्ड चयन और हाइलाइटिंग
# विशिष्ट फ़ील्ड का चयन करें
curl -X GET "localhost:9200/products/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": { "match_all": {} },
"_source": ["name", "price"]
}
'
# हाइलाइटिंग
curl -X GET "localhost:9200/products/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"match": { "description": "gaming laptop" }
},
"highlight": {
"fields": {
"description": {}
}
}
}
'
इंडेक्स एलियास
# एलियास बनाएं
curl -X POST "localhost:9200/_aliases?pretty" -H 'Content-Type: application/json' -d'
{
"actions": [
{ "add": { "index": "products_v1", "alias": "products" }}
]
}
'
# नए इंडेक्स पर स्विच करें (शून्य डाउनटाइम)
curl -X POST "localhost:9200/_aliases?pretty" -H 'Content-Type: application/json' -d'
{
"actions": [
{ "remove": { "index": "products_v1", "alias": "products" }},
{ "add": { "index": "products_v2", "alias": "products" }}
]
}
'
# एलियास सूची
curl -X GET "localhost:9200/_cat/aliases?v"
रीइंडेक्स
# एक इंडेक्स से दूसरे इंडेक्स में रीइंडेक्स करें
curl -X POST "localhost:9200/_reindex?pretty" -H 'Content-Type: application/json' -d'
{
"source": {
"index": "old_products"
},
"dest": {
"index": "new_products"
}
}
'
# क्वेरी के साथ रीइंडेक्स
curl -X POST "localhost:9200/_reindex?pretty" -H 'Content-Type: application/json' -d'
{
"source": {
"index": "products",
"query": {
"range": {
"price": { "gte": 100 }
}
}
},
"dest": {
"index": "expensive_products"
}
}
'
स्नैपशॉट और बैकअप
# स्नैपशॉट रिपॉजिटरी रजिस्टर करें
curl -X PUT "localhost:9200/_snapshot/my_backup?pretty" -H 'Content-Type: application/json' -d'
{
"type": "fs",
"settings": {
"location": "/mount/backups/my_backup"
}
}
'
# स्नैपशॉट बनाएं
curl -X PUT "localhost:9200/_snapshot/my_backup/snapshot_1?wait_for_completion=true&pretty"
# स्नैपशॉट रिस्टोर करें
curl -X POST "localhost:9200/_snapshot/my_backup/snapshot_1/_restore?pretty"
# स्नैपशॉट सूची
curl -X GET "localhost:9200/_snapshot/my_backup/_all?pretty"
# स्नैपशॉट हटाएं
curl -X DELETE "localhost:9200/_snapshot/my_backup/snapshot_1?pretty"
प्रदर्शन अनुकूलन
इंडेक्स सेटिंग्स
# बुल्क इंडेक्सिंग के दौरान रिफ्रेश डिसएबल करें
curl -X PUT "localhost:9200/products/_settings?pretty" -H 'Content-Type: application/json' -d'
{
"index": {
"refresh_interval": "-1"
}
}
'
# बुल्क इंडेक्सिंग के बाद पुनः सक्षम करें
curl -X PUT "localhost:9200/products/_settings?pretty" -H 'Content-Type: application/json' -d'
{
"index": {
"refresh_interval": "1s"
}
}
'
# फोर्स मर्ज (अनुकूलन)
curl -X POST "localhost:9200/products/_forcemerge?max_num_segments=1&pretty"
कैश क्लियरिंग
# सभी कैश क्लियर करें
curl -X POST "localhost:9200/_cache/clear?pretty"
# विशिष्ट कैश क्लियर करें
curl -X POST "localhost:9200/products/_cache/clear?query=true&pretty"
निगरानी और समस्या निवारण
# लंबित कार्य
curl -X GET "localhost:9200/_cat/pending_tasks?v"
# थ्रेड पूल सांख्यिकी
curl -X GET "localhost:9200/_cat/thread_pool?v"
# सेगमेंट जानकारी
curl -X GET "localhost:9200/_cat/segments?v"
# रिकवरी जानकारी
curl -X GET "localhost:9200/_cat/recovery?v&h=index,stage,time"
# कार्य API
curl -X GET "localhost:9200/_tasks?detailed=true&pretty"
पाइथन क्लाइंट उदाहरण
from elasticsearch import Elasticsearch
# Elasticsearch से कनेक्ट करें
es = Elasticsearch(['http://localhost:9200'])
# दस्तावेज़ इंडेक्स करें
doc = {
'name': 'Laptop',
'price': 999.99,
'tags': ['electronics']
}
es.index(index='products', id=1, document=doc)
# खोजें
resp = es.search(index='products', query={'match': {'name': 'laptop'}})
for hit in resp['hits']['hits']:
print(hit['_source'])
# बुल्क इंडेक्सिंग
from elasticsearch.helpers import bulk
actions = [
{
'_index': 'products',
'_id': i,
'_source': {'name': f'Product {i}', 'price': i * 10}
}
for i in range(1000)
]
bulk(es, actions)
जावास्क्रिप्ट/नोड.जेएस क्लाइंट उदाहरण
Elasticsearch JavaScript client एक प्रकार सुरक्षित तरीका प्रदान करता है अपने क्लस्टर के साथ इंटरैक्ट करने के लिए। उत्पादन अनुप्रयोगों के लिए, बेहतर प्रकार सुरक्षा और ऑटोकंप्लीशन के लिए TypeScript का उपयोग करने पर विचार करें। हमारे TypeScript Cheatsheet में प्रकार परिभाषाओं और इंटरफेस के लिए सर्वोत्तम प्रथाओं के बारे में जानें।
const { Client } = require('@elastic/elasticsearch');
const client = new Client({ node: 'http://localhost:9200' });
// दस्तावेज़ इंडेक्स करें
async function indexDoc() {
await client.index({
index: 'products',
id: 1,
document: {
name: 'Laptop',
price: 999.99
}
});
}
// खोजें
async function search() {
const result = await client.search({
index: 'products',
query: {
match: { name: 'laptop' }
}
});
console.log(result.hits.hits);
}
// बुल्क इंडेक्सिंग
async function bulkIndex() {
const operations = [];
for (let i = 0; i < 1000; i++) {
operations.push({ index: { _index: 'products', _id: i } });
operations.push({ name: `Product ${i}`, price: i * 10 });
}
await client.bulk({ operations });
}
स्ट्रांग टाइपिंग के साथ टाइपस्क्रिप्ट उदाहरण
import { Client } from '@elastic/elasticsearch';
interface Product {
name: string;
price: number;
tags?: string[];
created_at?: Date;
}
const client = new Client({ node: 'http://localhost:9200' });
async function indexProduct(product: Product, id: number): Promise<void> {
await client.index<Product>({
index: 'products',
id: id.toString(),
document: product
});
}
async function searchProducts(query: string): Promise<Product[]> {
const result = await client.search<Product>({
index: 'products',
query: {
match: { name: query }
}
});
return result.hits.hits.map(hit => hit._source as Product);
}
सर्वोत्तम प्रथाएँ
इंडेक्स डिजाइन
- प्रदर्शन के लिए शार्ड आकार को 20-50GB के बीच रखें
- समय श्रेणी डेटा के लिए इंडेक्स लाइफसाइकल मैनेजमेंट (ILM) का उपयोग करें
- डेटा इंडेक्स करने से पहले मैपिंग को सावधानीपूर्वक डिजाइन करें
- उपयुक्त फ़ील्ड प्रकारों का उपयोग करें (कीवर्ड बनाम टेक्स्ट, डेट फॉर्मेट)
- बड़े दस्तावेज़ों के लिए
_sourceको डिसएबल करें यदि आवश्यक नहीं हो
क्वेरी अनुकूलन
- स्कोरिंग की आवश्यकता न हो तो फ़िल्टर का उपयोग करें
- संरचित डेटा के लिए टर्म-स्तर क्वेरी का पसंद करें
- कई शर्तों को कुशलतापूर्वक मिलाने के लिए
boolक्वेरी का उपयोग करें - गहरी पेजिंग के लिए
search_afterके साथ पेजिंग लागू करें - अक्सर उपयोग किए जाने वाले फ़िल्टर को कैश करें
इंडेक्सिंग प्रदर्शन
- बुल्क API का उपयोग बैच इंडेक्सिंग के लिए करें (प्रति अनुरोध 1000-5000 दस्तावेज़)
- बुल्क ऑपरेशन्स के दौरान रिफ्रेश डिसएबल करें
- भारी इंडेक्सिंग के दौरान
index.refresh_intervalबढ़ाएं - समानांतर इंडेक्सिंग के लिए कई थ्रेड/वर्कर्स का उपयोग करें
- बेहतर शार्ड वितरण के लिए रूटिंग का विचार करें
क्लस्टर प्रबंधन
- क्लस्टर स्वास्थ्य को नियमित रूप से निगरानी करें
- उपयुक्त रिप्लिका कॉन्फ़िगरेशन सेट करें
- बड़े क्लस्टर के लिए समर्पित मास्टर नोड्स का उपयोग करें
- स्नैपशॉट के साथ उचित बैकअप रणनीति लागू करें
- JVM हिप उपयोग की निगरानी करें (75% से नीचे रखें)
सुरक्षा
- ऑथेंटिकेशन और ऑथोराइजेशन सक्षम करें (X-Pack Security)
- उत्पादन तैनाती के लिए HTTPS का उपयोग करें (cURL के लिए
--cacert,--cert, और--keyविकल्पों के साथ SSL/TLS कॉन्फ़िगर करें) - उचित भूमिका-आधारित एक्सेस कंट्रोल लागू करें
- नियमित सुरक्षा अपडेट और पैच
- रेस्ट और ट्रांजिट में डेटा एन्क्रिप्ट करें
सामान्य उपयोग मामले
पूर्ण-टेक्स्ट खोज
Elasticsearch पूर्ण-टेक्स्ट खोज में उत्कृष्ट है जिसमें विशेषताएं शामिल हैं:
- प्रासंगिकता स्कोरिंग
- फजी मैचिंग
- वाक्यांश मैचिंग
- समानार्थी हैंडलिंग
- बहुभाषी समर्थन
लॉग एनालिटिक्स (ELK स्टैक)
- लॉग्स को Logstash/Filebeat के साथ एकत्र करें
- Elasticsearch में लॉग्स इंडेक्स और खोजें
- Kibana डैशबोर्ड्स के साथ विज़ुअलाइज़ करें
- असामान्यताओं के लिए अलर्ट सेट करें
ई-कॉमर्स खोज
- उत्पाद कैटलॉग खोज
- एग्रीगेशन के साथ फेसेटेड नेविगेशन
- ऑटो-कंप्लीट और सुझाव
- व्यक्तिगत खोज परिणाम
एप्लिकेशन प्रदर्शन निगरानी
- एप्लिकेशन मेट्रिक्स इंडेक्स करें
- रियल-टाइम निगरानी डैशबोर्ड्स
- असामान्यता पता लगाना
- प्रदर्शन ट्रेंड विश्लेषण
उपयोगी लिंक
आधिकारिक Elasticsearch संसाधन
- आधिकारिक Elasticsearch दस्तावेज़ीकरण
- Elasticsearch API संदर्भ
- Query DSL गाइड
- Elasticsearch Python क्लाइंट
- Elasticsearch JavaScript क्लाइंट
- Elastic स्टैक अवलोकन
- Elasticsearch प्रदर्शन ट्यूनिंग
- इंडेक्स लाइफसाइकल मैनेजमेंट
संबंधित चिट्ठे और गाइड
- cURL चिट्ठा - Elasticsearch REST API के लिए HTTP अनुरोधों को मास्टर करने के लिए आवश्यक
- TypeScript चिट्ठा: कोर कॉन्सेप्ट्स और सर्वोत्तम प्रथाएँ - टाइप-सुरक्षित Elasticsearch क्लाइंट अनुप्रयोग बनाएं