【问题标题】:How to specify an analyzer while creating an index in ElasticSearch如何在 ElasticSearch 中创建索引时指定分析器
【发布时间】:2013-08-16 18:21:15
【问题描述】:

我想指定一个分析器,为其命名,并在创建索引时在映射中使用该名称。我迷路了,我的 ES 实例总是返回错误消息。

这大概就是我想做的事情:

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

但这似乎不起作用; ES 实例总是向我返回一个错误,例如

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

我尝试将字典的"analysis" 分支放在多个位置(在映射等内部),但无济于事。我想一个完整的例子(我现在找不到)也会帮助我。可能我错过了一些相当基本的东西。

【问题讨论】:

    标签: indexing mapping elasticsearch analyzer


    【解决方案1】:

    “分析”位于“设置”块中,在创建索引时位于“映射”块之前或之后。

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

    这是一个很好的完整示例:Example 1

    【讨论】:

    • 是的,确实,我忘记了“设置”下的最后一个大括号。所以“设置”和“映射”应该是2个独立的块,“分析”应该包含在“设置”块中。
    • 感谢您的链接,找到了我需要的东西!但是映射实际指定用于特定属性的分析器的点是我最难找到示例的地方。这将是您回答的一个很好的补充;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 2023-03-25
    • 2021-12-05
    • 2018-11-09
    相关资源
    最近更新 更多