Подтвердить что ты не робот

Анализатор индекса по умолчанию в elasticsearch

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

Я читал, что "index" : "not_analyzed" в свойствах типа индекса должен работать. Но проблема в том, что я не знаю свою структуру документа перед началом работы. Я бы индексировал случайные базы данных MySQL в elasticsearch, не зная структуры таблицы.

Как я могу настроить elasticsearch таким образом, чтобы по умолчанию он использовал "index" : "not_analyzed" до тех пор, пока об этом не попросят другие. Благодаря

PS: Я использую java, если я могу напрямую использовать любой API для этого, я бы очень хотел.

4b9b3361

Ответ 1

Я бы использовал динамические шаблоны - он должен делать то, что вы ищете:

{
    "testtemplates" : {
        "dynamic_templates" : [
            {
                "template1" : {
                    "match" : "*",
                    "match_mapping_type" : "string",
                    "mapping" : {
                        "type" : "string",
                        "index" : "not_analyzed"
                    }
                }
            }
        ]
    }
}

Подробнее об этом здесь:

https://www.elastic.co/guide/en/elasticsearch/guide/current/custom-dynamic-mapping.html#dynamic-templates

Важно: Если кто-то предложит этот подход для решения проблемы not_analyzed, это не сработает! анализатор ключевых слов анализирует данные и преобразует данные в маленькие буквы.

например. Data: ElasticSearchRocks ==> Keyword Analyzer: elasticsearchrocks

Попробуйте сами проанализировать запрос и посмотреть, как это происходит.

curl -XPUT localhost:9200/testindex -d '{
    "index" : {
        "analysis" : {
            "analyzer" : {
                "default" : {
                    "type" : "keyword"
                }
            }
       }
    }
}'

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis-keyword-analyzer.html

Ответ 2

добавьте index.analysis.analyzer.default.type: keyword в elasticsearch.yml.