2013-08-14 23 views
19

Chciałbym określić analizator, nazwij go i użyj tej nazwy w odwzorowaniu podczas tworzenia indeksu. Jestem zagubiony, moja instancja ES zawsze zwraca mi komunikat o błędzie.Jak określić analizator podczas tworzenia indeksu w ElasticSearch

to, z grubsza, co chciałbym zrobić:

"settings": { 
    "mappings": { 
    "alfedoc": { 
     "properties": { 
     "id": { "type": "string" }, 
     "alfefield": { "type": "string", "analyzer": "alfeanalyzer" } 
     } 
    } 
    }, 
    "analysis": { 
    "analyzer": { 
     "alfeanalyzer": { 
     "type": "pattern", 
     "pattern":"\\s+" 
     } 
    } 
    } 
} 

Ale to nie wydaje się do pracy; instancja ES zawsze zwraca mi błąd jak

MapperParsingException[mapping [alfedoc]]; nested: MapperParsingException[Analyzer [alfeanalyzer] not found for field [alfefield]]; 

Próbowałem oddanie "analysis" oddział słownika w kilku miejscach (wewnątrz odwzorowania itp), ale bezskutecznie. Wydaje mi się, że działający kompletny przykład (którego nie mogłem znaleźć do tej pory) również mi pomógłby. Prawdopodobnie brakuje mi czegoś podstawowego.

Odpowiedz

27

"Analiza" przechodzi do bloku "ustawienia", który przechodzi przed lub po bloku "mapowania" podczas tworzenia indeksu.

"settings": { 
    "analysis": { 
     "analyzer": { 
      "alfeanalyzer": { 
       "type": "pattern", 
       "pattern": "\\s+" 
      } 
     } 
    } 
}, 
"mappings": { 
    "alfedoc": { ... } 
} 

Oto dobry kompletny, przykład: Example 1

+4

Tak, rzeczywiście, zapomniałam, że ostatnia klamra pod "Ustawienia". Zatem "ustawienia" i "odwzorowania" powinny składać się z 2 oddzielnych bloków, a "analiza" powinna być zawarta w bloku "ustawienia". –

+0

Doskonałe linki do przykładów, dziękuję. – pulkitsinghal

+1

Dzięki za linki, znalazłem to, czego potrzebowałem! Ale punkt, w którym mapowanie faktycznie określa, które analizatory użyć dla konkretnej właściwości, jest tym, co miałem najtrudniej znaleźć przykłady. Byłby to świetny dodatek do twojej odpowiedzi;) –