Mam pole w polu ElasticSearch, którego nie chcę analizować, i. mi. powinien być przechowywany i porównywany dosłownie. Wartości będą zawierać litery, cyfry, spacje, kreski, ukośniki i być może inne znaki.Jak nie analizować w ElasticSearch?
Jeśli nie podam analizatora w moim mapowaniu dla tego pola, domyślnie nadal korzysta się z tokenizera, który łamie mój słowny ciąg w kawałki słów. Nie chcę tego.
Czy istnieje super prosty analizator, który zasadniczo nie analizuje? Czy istnieje inny sposób oznaczania, że to pole nie będzie analizowane?
Tworzę tylko indeks, nie robię nic więcej. Mogę używać analizatorów takich jak "angielski" dla innych pól, które wydają się być wbudowanymi nazwami dla wstępnie skonfigurowanych analizatorów. Czy istnieje lista innych nazw? Być może jeden pasuje do moich potrzeb (a mianowicie nie robi nic z danymi wejściowymi).
To jest mój mapowanie obecnie:
{
"my_type": {
"properties": {
"my_field1": { "type": "string", "analyzer": "english" },
"my_field2": { "type": "string" }
}
}
}
my_field1
jest zależne od języka; to wydaje się działać. my_field2
będzie dosłownie. Chciałbym dać analizator, który po prostu nic nie robi.
Przykładowa wartość dla my_field2
to "B45c 14/04"
.
Ah! Tego właśnie szukałem. Kilka razy natknąłem się na to "not_analized", ale zawsze uważałem, że używanie go oznaczałoby, że nie można go w ogóle przeszukiwać (najwyraźniej do tego służy słowo "no"). Link do dokumentacji był pouczający, dziękuję! (I z czasem zaakceptuję tę odpowiedź, chyba że pojawi się jeszcze bardziej pomocna.) – Alfe
@Alfe, możesz mieć w [tej odpowiedzi więcej informacji] (http://stackoverflow.com/questions/16911633/not-indexed-field -is-stored-in-index/16923084 # 16923084) z opcją 'index: no' – ramseykhalaf
Czy możemy ustawić globalnie, aby nie analizować typu łańcucha dla wszystkich? – coderek