ไม่สนับสนุนส่วนหัวประเภทเนื้อหา [application / x-www-form-urlencoded] บน Elasticsearch


135

ฉันเคยมี ElasticSearch 5.2 และเพิ่งอัปเกรดเป็น 6.0

ฉันพยายามสร้างเทมเพลตดัชนีตามคำแนะนำที่นี่แต่พบข้อผิดพลาด

Content-Type header [application/x-www-form-urlencoded] is not supported

คำถามของฉันคือ

curl -X PUT localhost:9200/_template/template_1 -d '
{
  "index_patterns": ["te*", "bar*"],
  "mappings": {
    "type1": {
      "properties": {
        "host_name": {
          "type": "keyword"
        }
      }
    }
  }
}'

คำตอบ:


244

ในการแก้ไขปัญหานี้ให้เพิ่มตัวเลือก curl -H 'Content-Type: application/json'


ข้อผิดพลาดนี้เกิดจากการตรวจสอบประเภทเนื้อหาที่เข้มงวดซึ่งนำมาใช้ใน ElasticSearch 6.0 ตามที่อธิบายไว้ในโพสต์นี้

เริ่มจาก Elasticsearch 6.0 คำขอ REST ทั้งหมดที่มีเนื้อหาต้องระบุประเภทเนื้อหาที่ถูกต้องสำหรับเนื้อหานั้นด้วย


สวัสดี @sam มีวิธีแก้ไขแบบถาวรหรือไม่โดยที่ฉันไม่ต้องตั้งค่าสถานะนี้สำหรับแต่ละคำขอ
Rupesh

1
@sam ขอบคุณ sam อย่างไรก็ตามเมื่อฉันเพิ่มตัวเลือก curl มันทำให้ฉันมี {"error": "Content-Type header [application / x-www-form-urlencoded] is not supported", "status": 406} curl: (6) ไม่สามารถแก้ไขโฮสต์: application
haneul kim

2
@haneulkim หากใช้ curl บน Windows คุณต้องใช้เครื่องหมายอัญประกาศคู่แทนเครื่องหมายคำพูดเดี่ยว ตัวอย่างคำสั่ง curl บน Windows: curl -X PUT "localhost: 9200 / customer / _doc / 1? pretty" -H "Content-Type: application / json" -d "{\" name \ ": \" John Doe \ "}"
Kevin Le

11

วิธีแก้คือเพิ่มContent-Type: application/jsonส่วนหัว

curl -XPUT 'localhost:9200/_template/template_1' \
  -H 'Content-Type: application/json' \
  -d '**your query**'

-1
"{ \"name\": { \"first\": {} }, \"address\": [ { \"address1\":\"lane\" } ] } "

ใน Windows เมื่อคุณให้ JSON เป็นพารามิเตอร์ให้ใช้เครื่องหมายคำพูดคู่เท่านั้น ใช้อักขระหลีก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.