Ошибка в добавлении настроек и отображений через curl в скрипте оболочки для упругого поиска - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь инициализировать настройки и сопоставления с помощью сценария оболочки в 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. Удалите лишнюю запятую в анализаторе

1 Ответ

0 голосов
/ 01 марта 2019

Помимо проблемы с синтаксисом, существует также проблема в полях json для упругого поиска, поэтому я изменяю некоторые поля и значения, а также разделяю настройки и сопоставления, чтобы их было легче читать.

 curl -XPUT 'elasticsearch:9200/x_product/_settings' -H 'Content-Type: application/json'  -d '{
            "analysis": {
                "filter": {
                    "ngram_filter": {
                        "type": "nGram",
                        "min_gram": 2,
                        "max_gram": 3
                    }
                },
                "analyzer": {
                    "ngram_analyzer": {
                    "type": "custom",
                    "tokenizer": "standard",
                    "filter":  ["lowercase", "ngram_filter"]
                    }
                }
            }
        }';
        curl -XPUT 'elasticsearch:9200/x_product/_mapping/product' -H 'Content-Type: application/json'  -d '{
            "properties": {
                "name": {
                    "type": "text",
                    "term_vector": "yes",
                    "analyzer": "ngram_analyzer",
                    "search_analyzer": "standard"
                },
                "description_value": {
                    "type": "text",
                    "term_vector": "yes",
                    "analyzer": "ngram_analyzer",
                    "search_analyzer": "standard"
                },
                "barcode_value": {
                    "type": "text",
                    "term_vector": "yes",
                    "analyzer": "ngram_analyzer",
                    "search_analyzer": "standard"
                },
                "searchword_content": {
                    "type": "text",
                    "term_vector": "yes",
                    "analyzer": "ngram_analyzer",
                    "search_analyzer": "standard"
                },
                "discount": {
                    "type": "integer"
                },
                "datetime": {
                    "type": "date",
                    "format": "epoch_millis"
                }
            }
        }';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...