Я пытаюсь инициализировать настройки и сопоставления с помощью сценария оболочки в Docker.
#!/bin/sh
until $(curl --output /dev/null --silent --head --fail http://elasticsearch:9200); do
printf '.'
sleep 5
done
for i in {30..0}; do
if curl elasticsearch:9200; then
curl -XPUT 'elasticsearch:9200/x_product/' -H 'Content-Type: application/json' -d '{
"settings": {
"number_of_shards": 1,
"analysis": {
"filter": {
"ngram_filter": {
"type": "nGram",
"min_gram": 2,
"max_gram": 3
}
},
"analyzer": {
"ngram_analyzer": {
"type": "custom",
"tokenizer": "my_tokenizer",
"filter": ["lowercase", "ngram_filter"]
}
}
}
},
"mappings" : {
"product": {
"name": {
"type": "string",
"include_in_all": true,
"term_vector": "yes",
"index_analyzer": "ngram_analyzer",
"search_analyzer": "standard"
},
"description_value": {
"type": "string",
"include_in_all": true,
"term_vector": "yes",
"index_analyzer": "ngram_analyzer",
"search_analyzer": "standard"
},
"barcode_value": {
"type": "string",
"include_in_all": true,
"term_vector": "yes",
"index_analyzer": "ngram_analyzer",
"search_analyzer": "standard"
},
"searchword_content": {
"type": "string",
"include_in_all": true,
"term_vector": "yes",
"index_analyzer": "ngram_analyzer",
"search_analyzer": "standard"
},
"discount": {
"type": "integer"
},
"datetime": {
"type": "date",
"format": "epoch_millis"
}
}
}
}';
break;
fi
sleep 2
done
Однако этот синтаксис выдает ошибку:
{"error": {"root_cause ": [{" type ":" parse_exception "," reason ":" Не удалось проанализировать содержимое для сопоставления "}]," type ":" parse_exception "," reason ":" Не удалось проанализировать содержимое для сопоставления ","reason_by ": {" type ":" json_parse_exception "," reason ":" Неожиданный символ ('}' (код 125)): ожидалось, что двойная кавычка начнет имя поля \ n в [Source: org.elasticsearch.transport.netty4.ByteBufStreamInput@770de4a9; строка: 19, столбец: 22] "}}," status ": 400}
Что не так с моим синтаксисом?
Обновлено: 1.Обновите мой синтаксис, изменив «нижний регистр» на «нижний регистр», также введите «тип», однако получил еще одну ошибку 2. Удалите лишнюю запятую в анализаторе