当前位置:  开发笔记 > 编程语言 > 正文

多语言弹性搜索映射设置

如何解决《多语言弹性搜索映射设置》经验,为你挑选了1个好方法。

我有像MongoDB一样存储的文档:

const demoArticle = {
  created: new Date(),
  title: [{
    language: 'english',
    value: 'This is the english title'
  }, {
    language: 'dutch',
    value: 'Dit is de nederlandse titel'
  }]
}

我想将分析器添加到特定语言中,通常指定如下:

"mappings": {
   "article": {
      "properties": {
         "created": {
            "type": "date"
         },
         "title.value": {
           "type": "text",
           "analyzer": "english"
         }
      }
   }
}

但问题是:根据子级别上设置的语言,它应该根据相同的语言设置分析器.

我偶然发现了ElasticSearch中的动态模板,但我不太相信它适用于这个用例.

有什么建议?



1> Akrion..:

如果您将MongoDB对象language属性与ES语言分析器的确切名称相匹配,那么您只需按照Elastic方式推荐的方式添加:

{
  "mappings": {
    "article": {
      "properties": {
        "created": {
          "type": "date"
        },
        "title": {
          "type": "text",
          "fields": {
            "english": {
              "type": "text",
              "analyzer": "english"
            },
            "dutch": {
              "type": "text",
              "analyzer": "dutch"
            },
            "bulgarian": {
              "type": "text",
              "analyzer": "bulgarian"
            }
          }
        }
      }
    }
  }

通过这种方式,您可以language/analyzer在MongoDB和ES之间进行匹配.

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有