Ошибка приложения / x- www-form-urlencoded не поддерживается при отправке запросов curl на поисковый сервер elasti c - PullRequest
1 голос
/ 10 января 2020

Я пытаюсь опубликовать некоторые данные на поисковом сервере elasti c. Я использую локон для этого. Код:

curl -X PUT https://username:password@someurl:443/index_name?pretty -H 'Content-Type: application/json' -d  ' {"mappings": {"properties": {"my_field": {"type": "search_as_you_type"}}}}'

только базовый c материал для извлечения информации индекса с помощью cat/_indices?v works

Ошибки включают

"Content-Type header [application/x-www-form-urlencoded] is not supported", curl: (6) Could not resolve host: application
curl: (3) [globbing] unmatched brace in column 1
curl: (3) [globbing] unmatched brace in column 1
curl: (3) [globbing] unmatched brace in column 1
curl: (3) [globbing] unmatched brace in column 1
curl: (3) [globbing] unmatched close brace/bracket in column 19

Ответы [ 3 ]

0 голосов
/ 11 января 2020

Разобрался после проб и ошибок. Вот используемый код (после создания индекса).

import requests
import json
url = 'http://localhost:9200/companies_list/_mapping'
headers1 = {'Content-Type':'application/json'}
data_obj = {
      "properties": {
        "date": {
          "type":   "date",
          "format": "yyyy-MM-dd HH:mm:ss"
        }
      }
  }

response = requests.put(url, headers=headers1, data=json.dumps(data_obj))
print(response.content)
0 голосов
/ 11 января 2020

Вот несколько полезных команд для людей, начинающих наasticsearch или обновляющих до последней версии

import requests
import json

headers1 = {'Content-Type':'application/json'}

#create index
url = 'http://localhost:9200/my_index'
response = requests.put(url)

#view indexes
url = 'http://localhost:9200/_cat/indices?v'
response = requests.get(url)

#create mappings. if mappings are not created, then dynamic mapping will be created by elastic search
url = 'http://localhost:9200/my_index/_mapping'
response = requests.post(url, headers=headers1, data=json.dumps(data_obj))

data_obj = {
      "properties": {
        "names": {
          "type":   "search_as_you_type",
        }
      }
  }

#insert data. if mappings have not been created initially, then dynamic mapping will be created by elastic search
url = 'http://localhost:9200/my_index/_doc/'
my_list = ['test name 1', 'test name 2', 'test name 3']
for i,j in enumerate(my_list):
    response = requests.post(url+str(i), headers=headers1, data=json.dumps({"names":j}))
    print(response.content)


#retrieve data. 
url = 'http://localhost:9200/my_index/_doc/_search'
url = 'http://localhost:9200/my_index/_search' #works with both

data_obj =  {
  "query": {
    "multi_match": {
      "query": "test name 2",
      "fields": [
        "names",
        "names._2gram",
        "names._3gram"
      ]
    }
  }
}
response = requests.get(url, headers=headers1, data=json.dumps(data_obj))
print(response.content)
x = json.loads(response.content)
#x = json.loads(response.content.decode("utf-8")) #in case the response is in bytes and not str
for i in x["hits"]["hits"]:
    print(i["_source"]["names"], i["_score"])

Я новичок в поиске elasti c. Будет продолжать обновлять пост с новыми основами

0 голосов
/ 10 января 2020

В сообщении об ошибке ясно, что вы используете неправильный тип контента application/x-www-form-urlencoded в самой первой строке сообщения об ошибке.

"Заголовок типа контента [application / x- www-form-urlencoded] не поддерживается ",

Так как данное отображение, похоже, скопировано из официальной ссылки ES https://www.elastic.co/guide/en/elasticsearch/reference/7.x/search-as-you-type.html, там только вы можете найти соответствующий формат CURL.

Вставив этот формат, а также снимок экрана по ссылке, как вы можете скопировать всю команду curl.

copy as curl in circle здесь, и я попробовал его на своем локальном компьютере, и он работал Обратите внимание, единственное отличие заключается в типе контента, который должен быть application/json

curl -X PUT "localhost:9500/so_index?pretty" -H 'Content-Type: application/json' -d'
{
  "mappings": {
    "properties": {
      "my_field": {
        "type": "search_as_you_type"
      }
    }
  }
}
'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...