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

带有预定义映射然后索引文档的Elasticsearch问题

常波鸿
2023-03-14

我正在尝试索引stackoverflow数据。首先,我使用指定的映射和设置创建一个索引。

    @classmethod
    def create_index_with_set_map(cls, name, elasticsearch):
        """
        create index with default mappings and settings(and analyzer).

    Argument:
    name -- The name of the index.
    elasticsearch -- Elasticsearch instance for connection.
        """
     
        mappings = "mappings": {
            "properties": {
                "Body": {
                    "type": "text",
                    "analyzer": "whitespace",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    }
                }}}
       
        settings = {
            "analysis": {
                "analyzer": {
                    "default": {
                        "type": "whitespace"
                    }
                }
            }
        }

        body = {
            "settings": settings,
            "mappings": mappings

        }
        res = elasticsearch.indices.create(index=name, body=body)
        print(res)

然后我尝试批量索引我的文档:

@classmethod
    def start_index(cls, index_name, index_path, elasticsearch, doc_type):
        """
    This function is using bulk index.

    Argument:
    index_name -- the name of index
    index_path -- the path of xml file to index
    elasticsearch -- Elasticsearch instance for connection
    doc_type -- doc type 

    Returns:
    """

        for lines in Parser.xml_reader(index_path):
            actions = [
                {
                    "_index": index_name,
                    "_type": doc_type,
                    "_id": Parser.post_parser(line)['Id'],
                    "_source":  Parser.post_parser(line)


                }
                for line in lines if Parser.post_parser(line) is not None
            ]

            helpers.bulk(elasticsearch, actions)

给定错误:('500个文档未能索引.', [{'索引':{'_index':'sof-问题-答案2','_type':'Stackoverflow','_id':1','status':400,'错误':{'type':'illegal_argument_exception','原因':'Mapper for[Body]与现有的映射冲突:\n[mapper[Body]有不同的[分析器]]'}, '数据':...}

共有1个答案

姬高澹
2023-03-14

它看起来像sof-quess-esser2索引已经使用不同的分析器创建,可能使用默认的标准分析器

如果您通过kibana运行命令GET sof-question-answer2/u mapping,您将看到Body字段没有空格。

为了解决这个问题,您必须删除索引,更新映射,并重新索引数据(如果有)。

 类似资料:
  • 问题内容: 也许我缺少一些简单的东西,但仍然无法弄清楚以下内容: 从ES 6.x开始,该字段已弃用,建议使用说明(https://www.elastic.co/guide/en/elasticsearch/reference/current/copy- to.html )。 但是,给我的印象是,您需要显式指定要复制到自定义字段的字段。但是,如果我使用动态映射,则我不事先知道字段,因此不能使用? 我

  • 我有一个文档,我希望将其存储在ElasticSearch中,并能够对其运行查询,但我认为文档结构可能格式不正确,因此我无法进行有效的查询。 该文档试图是通用的,因此具有一组重复结构。 例如: 注意:我简化了这个例子,就像在真实的文档中一样,重复结构有大约7个字段,其中3个字段将明确标识“类型”。 从上面的示例中,我看不到如何编写映射,因为“值”可以是: 整数 IP地址 只需要用空格标记的字段 约会

  • 问题所在 我是elasticsearch的新手,我想了解动态映射和重新索引文档之间的关系。 根据我的实验,当动态映射打开时,文档的重新索引是自动完成的。这意味着如果向文档中添加新字段,它将自动被索引。 TEST1-带映射的索引 TEST2-没有映射的索引

  • 我对弹性搜索一无所知。所以,如果这是一个愚蠢的问题,请原谅我,我的问题可能已经在其他地方得到了回答,但我找不到。我想使用弹性搜索作为我的网络中PDF和docx的搜索引擎。我使用fscrawler将PDF文件吸收到弹性搜索中。因为我要摄取的文档是几种语言的,所以我想使用n-graming进行词干分析。为此,我想像这样更新我的映射 现在我收到了这个错误信息 {“error”:{“root_cause”

  • 问题内容: 大家好,我正在尝试创建架构测试。 我收到以下错误 请帮助我解决此错误 问题答案: 您快到这里了,只是缺少了一些东西: 更新 如果您的索引已经存在,您还可以像这样修改映射: 更新 : 从ES 7开始,已删除映射类型。您可以在这里阅读更多详细信息

  • 我目前正在使用ElasticSearch(PHP客户端)构建一个电子商务系统搜索,但遇到了一个问题 我存储的数据是简单文本(如产品名称)和列表(如颜色、大小)的混合体 我遇到的问题是当产品没有任何颜色时 我有以下字段 所以当我发送一个产品时,它看起来是这样的 这就像预期的一样,但是当我尝试发送这样的东西时 它抛出了一个错误: {“error”:{“root_cause”:[{“type”:“map