ข้ามไปยังเนื้อหาหลัก
เวอร์ชัน: ล่าสุด

Search API

ภาพรวม

Search API ให้วิธีการที่มีประสิทธิภาพในการค้นหาทรัพยากร Omise ทั้งหมดของคุณโดยใช้ความสามารถในการค้นหาแบบข้อความเต็ม ค้นหาการเรียกเก็บเงิน ลูกค้า ข้อพิพาท ผู้รับ และอื่นๆ โดยใช้คำสำคัญ ข้อมูลเมตา หรือฟิลด์ที่เฉพาะเจาะจง

เอนด์พอยท์ที่มี

สิ่งที่คุณสามารถทำได้

  • การค้นหาแบบข้อความเต็ม - ค้นหาด้วยคำสำคัญในทรัพยากรทั้งหมด
  • การค้นหาตามขอบเขต - จำกัดการค้นหาให้เฉพาะประเภททรัพยากรที่ระบุ
  • การค้นหาข้อมูลเมตา - ค้นหาทรัพยากรตามค่าข้อมูลเมตาที่กำหนดเอง
  • การค้นหาการ์ด - ค้นหาการเรียกเก็บเงินด้วยตัวเลข 4 หลักสุดท้ายของการ์ด
  • การค้นหาลูกค้า - ค้นหาด้วยอีเมล ชื่อ หรือคำอธิบาย
  • การกรองตามวันที่ - รวมการค้นหากับช่วงวันที่
  • การแบ่งหน้า - นำทางผ่านชุดผลลัพธ์ขนาดใหญ่

ทรัพยากรที่สามารถค้นหาได้

การเรียกเก็บเงิน

ค้นหาการเรียกเก็บเงินด้วย:

  • คำอธิบาย
  • ค่าข้อมูลเมตา
  • ตัวเลข 4 หลักสุดท้ายของการ์ด
  • อีเมลลูกค้า
  • หมายเลขอ้างอิง
  • ข้อความแสดงความล้มเหลว

ลูกค้า

ค้นหาลูกค้าด้วย:

  • ที่อยู่อีเมล
  • คำอธิบาย
  • ค่าข้อมูลเมตา
  • ชื่อ (จากการ์ด)

ข้อพิพาท

ค้นหาข้อพิพาทด้วย:

  • คำอธิบายการเรียกเก็บเงิน
  • รหัสเหตุผล
  • ข้อมูลเมตา
  • ข้อมูลลูกค้า

ผู้รับ

ค้นหาผู้รับด้วย:

  • ชื่อ
  • อีเมล
  • ชื่อบัญชีธนาคาร
  • คำอธิบาย
  • ข้อมูลเมตา

การคืนเงิน

ค้นหาการคืนเงินด้วย:

  • คำอธิบายการเรียกเก็บเงินที่เกี่ยวข้อง
  • ค่าข้อมูลเมตา

ขอบเขตการค้นหา

ระบุประเภททรัพยากรที่จะค้นหา:

  • charge - ค้นหาเฉพาะการเรียกเก็บเงิน
  • customer - ค้นหาเฉพาะลูกค้า
  • dispute - ค้นหาเฉพาะข้อพิพาท
  • recipient - ค้นหาเฉพาะผู้รับ
  • refund - ค้นหาเฉพาะการคืนเงิน
  • transfer - ค้นหาเฉพาะการโอน

กรณีการใช้งาน

ค้นหาการเรียกเก็บเงินด้วยคำอธิบาย

GET /search?scope=charge&query=order+12345

ค้นหาลูกค้าด้วยอีเมล

GET /search?scope=customer&query=john@example.com

ค้นหาการเรียกเก็บเงินด้วยตัวเลข 4 หลักสุดท้ายของการ์ด

GET /search?scope=charge&query=4242

ค้นหาข้อมูลเมตา

GET /search?scope=charge&query=order_id:12345

การค้นหาหลายทรัพยากร

GET /search?query=john@example.com
# คืนค่าทรัพยากรทั้งหมดที่ตรงกับอีเมล

ตัวอย่างการใช้งาน

ค้นหาคำสั่งซื้อที่เฉพาะเจาะจง

const omise = require('omise')({
secretKey: 'skey_test_...'
});

// Search charges by order ID in metadata
const results = await omise.search.list({
scope: 'charge',
query: 'order_id:ORD-12345',
limit: 10
});

console.log(`Found ${results.total} charges`);
results.data.forEach(charge => {
console.log(`Charge: ${charge.id}, Amount: ${charge.amount}`);
});

ค้นหาการเรียกเก็บเงินทั้งหมดของลูกค้า

import omise

omise.api_secret = 'skey_test_...'

# Search by customer email
results = omise.Search.execute(
scope='charge',
query='customer@example.com',
limit=50
)

print(f'Found {results["total"]} charges')
for charge in results['data']:
print(f'Charge {charge["id"]}: {charge["amount"]} {charge["currency"]}')

ค้นหาด้วยตัวกรองวันที่

# Find charges in February containing "subscription"
curl "https://api.omise.co/search?scope=charge&query=subscription&from=2025-02-01T00:00:00Z&to=2025-02-28T23:59:59Z" \
-u skey_test_YOUR_SECRET_KEY:

ไวยากรณ์คำค้นหา

การค้นหาพื้นฐาน

query=keyword

ค้นหาคำสำคัญในฟิลด์ทั้งหมด

การค้นหาเฉพาะฟิลด์

query=email:john@example.com
query=description:order
query=metadata.order_id:12345

คำสำคัญหลายคำ

query=john+doe
query=order+12345

ใช้ตรรกะ AND - ค้นหาทรัพยากรที่ตรงกับคำสำคัญทั้งหมด

วลีที่ตรงกันทุกประการ

query="Blue T-Shirt"

ค้นหาวลีที่ตรงกันทุกประการ

รูปแบบการตอบกลับ

{
"object": "search",
"data": [
{
"object": "charge",
"id": "chrg_test_5xuy4w91xqz7d1w9u0t",
"amount": 100000,
"currency": "thb",
"description": "Order #12345 - Blue T-Shirt",
"metadata": {
"order_id": "12345"
},
...
}
],
"total": 1,
"from": "2025-01-01T00:00:00Z",
"to": "2025-02-07T23:59:59Z",
"limit": 20,
"page": 1
}

การแบ่งหน้า

ผลลัพธ์การค้นหาจะถูกแบ่งหน้า:

# First page
GET /search?query=order&limit=20&page=1

# Second page
GET /search?query=order&limit=20&page=2

คำนวณจำนวนหน้าทั้งหมด:

const totalPages = Math.ceil(results.total / results.limit);

แนวปฏิบัติที่ดีที่สุด

✅ แนะนำ

  • ใช้ขอบเขตที่เฉพาะเจาะจง - ค้นหาประเภททรัพยากรเดียวเพื่อประสิทธิภาพที่ดีขึ้น
  • เพิ่มตัวกรองวันที่ - จำกัดผลลัพธ์ด้วยพารามิเตอร์ from/to
  • ใช้การค้นหาข้อมูลเมตา - จัดโครงสร้างข้อมูลที่สามารถค้นหาได้ในข้อมูลเมตา
  • ใช้การแบ่งหน้า - จัดการผลลัพธ์ในส่วนที่จัดการได้
  • แคชผลลัพธ์การค้นหา - แคชในระยะเวลาสั้น (1-5 นาที)
  • ทำความสะอาดคำค้นหา - ตรวจสอบและหลีกหนีอินพุตของผู้ใช้

❌ หลีกเลี่ยง

  • อย่าค้นหาโดยไม่มีขอบเขต - ระบุขอบเขตเสมอเมื่อเป็นไปได้
  • อย่าใช้สำหรับการค้นหาแบบเรียลไทม์ - ใช้คำขอ GET โดยตรงสำหรับ ID ที่รู้จัก
  • อย่าข้ามการแบ่งหน้า - จัดการผลลัพธ์ที่แบ่งหน้าเสมอ
  • อย่าพึ่งพาการค้นหามากเกินไป - การค้นหาใช้สำหรับการค้นหา ไม่ใช่การดึงข้อมูลปกติ
  • อย่าค้นหาในขอบเขตกว้างเกินไป - ใช้ตัวกรองเพื่อจำกัดผลลัพธ์

เคล็ดลับด้านประสิทธิภาพ

จัดทำดัชนีข้อมูลเมตาของคุณ

จัดโครงสร้างข้อมูลเมตาเพื่อการค้นหาที่มีประสิทธิภาพ:

// Good - searchable structure
metadata: {
order_id: 'ORD-12345',
customer_email: 'john@example.com',
product_sku: 'TSHIRT-BLUE-L'
}

// Less efficient - nested structures harder to search
metadata: {
order: {
id: '12345',
customer: { email: 'john@example.com' }
}
}

ใช้ขีดจำกัดที่เหมาะสม

// For UI display
const results = await omise.search.list({
query: 'keyword',
limit: 20 // Good for initial display
});

// For exports
const results = await omise.search.list({
query: 'keyword',
limit: 100 // Fewer API calls for large exports
});

คำถามที่พบบ่อย

ฟิลด์ใดสามารถค้นหาได้

ฟิลด์ข้อความทั้งหมด รวมถึงคำอธิบาย ค่าข้อมูลเมตา ที่อยู่อีเมล ตัวเลข 4 หลักสุดท้ายของการ์ด และหมายเลขอ้างอิง

การค้นหาคำนึงถึงตัวพิมพ์ใหญ่-เล็กหรือไม่

ไม่ การค้นหาไม่คำนึงถึงตัวพิมพ์ใหญ่-เล็ก

ผลลัพธ์ถูกจัดอันดับอย่างไร

ผลลัพธ์ถูกจัดอันดับตามความเกี่ยวข้อง โดยการจับคู่ที่ตรงกันทุกประการจะได้รับการจัดอันดับสูงกว่า

ฉันสามารถใช้ตัวแทนได้หรือไม่

ไม่ไม่รองรับการค้นหาด้วยตัวแทน ใช้คำสำคัญบางส่วนแทน

ดัชนีการค้นหาอัปเดตล่าสุดเมื่อใด

ดัชนีการค้นหาได้รับการอัปเดตภายใน 1-2 วินาทีหลังจากการสร้าง/อัปเดตทรัพยากร

ทรัพยากรที่เกี่ยวข้อง

ดูเพิ่มเติม


ต้องการความช่วยเหลือหรือไม่ ติดต่อ support@omise.co