当前位置: 首页 > 知识库问答 >
问题:

elasticsearch[未能更新映射][找不到MapperParsingException[分析器]

杨腾
2023-03-14

我正在开发一个ES插件,其中包含一个新的分析器和一个新的过滤器。我的elasticsearch。yml文件如下-:

index:
    analysis:
        analyzer:
            ik_syno:
                tokenizer: ik
                filter: [my_synonym_filter_ik]
            ik_syno_smart:
                tokenizer: ik_smart
                filter: [my_synonym_filter_ik_smart]
        filter:
            my_synonym_filter_ik_smart:
                type: org.elasticsearch.index.analysis.SynonymcnTokenFilterFactory
                use_smart: true
            my_synonym_filter_ik:
                type: org.elasticsearch.index.analysis.SynonymcnTokenFilterFactory
                use_smart: true

同义词tokenfilterfactory是我的班级。

现在,当我使用

http://127.0.0.1:9200/newshuoshuo/_analyze?analyzer=ik_syno_smart

分析仪“ik\u syno\u smart”按预期工作。

 {
      "tokens" : [ {
        "token" : "hello",
        "start_offset" : 1,
        "end_offset" : 6,
        "type" : "ENGLISH",
        "position" : 1
      } ]
    }

但当我在映射调用中使用它时,它返回错误。

这是我的索引字段

 "content": {
      "type": "string",
      "index_analyzer": "ik_syno_smart",
      "search_analyzer": "ik_smart",
      "boost": "10"
    },

错误日志如下:

on [shard failure [failed to update mappings][MapperParsingException[Analyzer [ik_syno_smart] not found for field [content]]]]

我做错了什么?我的ES版本是1.7.0。

共有1个答案

卫宁
2023-03-14

您必须始终在所有机器上安装插件,否则ES将无法完成其工作,因为当索引被拆分到多台机器时,它们负责工作。此外,如果你正在使用许多插件,那么在elasticsearch中。yml有一处不错的房产

plugin.mandatory: mapper-attachments,lang-groovy

在安装所有插件之前,这不会启动ES。不幸的是,它还不能自动设置它们,但它会阻止一些你可能忘记的事情

 类似资料:
  • 我试图让我的Elasticsearch索引使用Porter词干算法,但当我使用analyzeendpoint进行测试时,我的自定义分析器没有定义。 我已经查看了ES留档和SO上的类似问题,但我不确定问题是什么。我尝试在创建索引时对设置使用单独的PUT请求,但没有效果。 这是我创建映射的方式: 这是从映射创建索引的函数。 这是我查询设置时得到的全部信息: 我只需要这两个字段来使用令牌过滤器。

  • 我的NEST代码用于Elasticsearch版本6,在Elastichsearch版本7中抛出以下错误: 无法分析映射[_doc]:根映射定义包含不支持的参数: 我见过这个问题,它解释了ES 7中不推荐的映射类型。。。我不确定这是否是我的问题?如何解决这个问题? 这是我生成索引的代码: 这是我的文档 以下是Elasticsearch的响应(错误):

  • 我想将字段类型从“string”更改为“date”(具体格式为“epoch\u second”)。由于无法更新现有索引的映射,因此我需要创建一个新索引,我最想使用现有索引的映射。以下是我正在使用的内容: Curl-XGET'http://localhost:9200/sam/saga/_mapping?pretty' 要将当前索引的映射转储到json文件中,其内容如下: 然后我替换 具有 并将新文

  • 问题内容: 在我的系统中,数据插入始终是通过logstash通过csv文件完成的。我从未预定义映射。但每当我输入它总是被一个字符串是,其结果就像一个条目被分为,,,。无论如何,我是否可以更改elasticsearch的默认/动态映射,以便所有字符串(无论索引如何,无论类型如何)都被视为?还是有一种在文件中设置它的方法?说我的档案看起来像 我希望所有的字符串都是这样,我也不介意将其作为所有将来的数据

  • 问题内容: 我想对如何处理以下情况有清楚的了解: 我正在从activerecord模型中添加或删除属性,所以我想在生产中的ElasticSearch中更新其映射。 据我了解,我应该… 1-创建一个新索引并从mysql导入所有内容 这是正确的命令吗? 为了创建正确的映射,我应该已经在模型中更新了映射,对吗? 2-删除旧的映射并创建一个别名为 我会那样做,对吗? 3-重启应用 我是否缺少某些东西,或者

  • 问题内容: 我是Elasticsearch的新手,目前正在实现用于搜索的过滤器。到目前为止,我的索引具有以下映射(我已经删除了一些字段): geo_distance字段将在location字段上实现,示例实例如下所示: 即采用geoJSON格式。 我了解我将必须更新索引,以使location字段的类型为,如文档(mapping-geo- point )中所述。似乎我必须删除索引并创建一个新索引,但