elasticsearch 如何在索引时有条件地将分析器应用于可能是多种语言之一的字段?

vaqhlq81  于 2022-12-03  发布在  ElasticSearch
关注(0)|答案(1)|浏览(124)

我的文档中有一个字段(例如input_text)包含的字符串可能是20种语言中的一种。我的另一个字段包含该语言的缩写形式(例如lang)
我希望在索引时根据从语言字段检测到的语言有条件地将分析器应用于文本字段。
我最终想要一个Kibana Jmeter 板与一个最常见的单词在文本字段(即在多种语言)的单一词云,但只有词已词干和标记与停止词删除。
有办法做到这一点吗?
elasticsearch文档建议为每种语言使用多个字段,然后为相应的字段指定一个分析器,但我不能这样做,因为有20种语言,这将使我的节点过载。

1u4esq0p

1u4esq0p1#

在Elasticsearch中没有办法达到你想要的效果(根据字段B的值对字段A应用分析器)。
我建议为每种语言创建一个索引,然后创建一个索引别名,将所有这些索引分组并对其进行查询。

PUT lang_de 
{
  "mappings": {
    "properties": {
      "input_text": {
        "type": "text",
        "analyzer": "german"
      }
    }
  }
}

PUT lang__en
{
  "mappings": {
    "properties": {
      "input_text": {
        "type": "text",
        "analyzer": "english"
      }
    }
  }
}

POST _aliases
{
  "actions": [
    {
      "add": {
        "index": "lang_*",
        "alias": "lang"
      }
    }
  ]
}

相关问题