2013-02-10 3 views
1

Я создаю словарь и хочу использовать elasticsearch в качестве поисковой системы. Она должна поддерживать несколько языков, так что моя база данных выглядит примерно так:Используйте другие стеблемеры в одном и том же индексе

| left_lang | right_lang | left_word | right_word | 
| de  | en   | Schuh  | shoe  | 
| da  | de   | sko  | Schuh  | 

На каком уровне можно определить различные настройки анализатора (например, парадигматическим и т.д.)? Могу ли я установить разные настройки для каждого поля документа? Например. в первом документе используйте немецкие настройки для left_word и английского для right_words, а во втором - использовать датский для left_words и German для right_words? Или я могу просто определить их по типу или индексу?

ответ

2

Да, вы можете определить эти настройки для каждого поля. Вы можете даже определить поля, которые анализируются с несколькими языковыми настройками, используя сопоставления «Multi-field».

{ 
    "settings":{ 
    "index":{ 
     "analysis":{ 
      "analyzer":{ 
       "analyzer_english":{ 
       "tokenizer":[...], 
       "filter":[...] 
       }, 
       "analyzer_german":{ 
       "tokenizer":[...], 
       "filter":[...] 
       } 
      } 
     } 
    } 
    }, 
    "mappings":{ 
    "test":{ 
     "properties":{ 
      "left_word":{ 
       "analyzer":"analyzer_german", 
       "type":"string" 
      }, 
      "right_word":{ 
       "analyzer":"analyzer_english", 
       "type":"string" 
      }, 
      "combo_word":{ 
       "type":"multi_field", 
       "fields":{ 
       "combo_word":{ 
        "analyzer":"analyzer_german", 
        "type":"string" 
       }, 
       "combo_english":{ 
        "analyzer":"analyzer_english", 
        "type":"string" 
       } 
       } 
      } 
     } 
    } 
    } 
}