当前位置: 首页 > 面试题库 >

如何将Elasticsearch的映射文件放在哪里?

景鸿晖
2023-03-14
问题内容

我对ES文档感到困惑,实际上,它们在这里指出索引必须位于映射目录(和indexname子目录)中:

可以在名为[mapping_name] .json的文件中定义映射,并将其放置在config / mappings /
_default位置下或config / mappings / [index_name]下(对于仅应与特定索引关联的映射)。

但后来这里的“配置”一节中,它指出:

索引模板也可以放置在模板目录下的配置位置(path.conf)中(请注意,请确保将其放置在所有符合条件的主节点上)。例如,可以将一个名为template_1.json的文件放在config
/ templates下,如果它与索引匹配,则会添加该文件。

我把映射放进去,/config/mappings/myindexname/mappinfile.json就像:

{
    "template": "maincontentindex",
    "settings": {
        "index": {
            "analysis": {
                "analyzer": {
                    "htmlStrippingAnalyzer": {
                        "tokenizer": "standard",
                        "filter": ["standard", "lowercase"],
                        "char_filter": "html_strip"
                    }
                }
            }
        }
    },

    "mappings": {
        "rendition": {
            "_timestamp": {
                "enabled": true,
                "store" : true
            },
            "properties": {
                "key": {
                    "type": "string",
                    "store": "yes",
                    "analyzer": "keyword"
                },
                "parentPage": {
                    "type": "string",
                    "store": "yes",
                    "analyzer": "keyword"
                },
                "type": {
                    "type": "string",
                    "store": "yes",
                    "analyzer": "keyword"
                },
                "language": {
                    "type": "string",
                    "store": "yes",
                    "analyzer": "keyword"
                },
                "device": {
                    "type": "string",
                    "store": "yes",
                    "analyzer": "keyword"
                },
                "territory": {
                    "type": "string",
                    "store": "yes",
                    "analyzer": "keyword"
                },
                "channel": {
                    "type": "string",
                    "store": "yes",
                    "analyzer": "keyword"
                },
                "template": {
                    "type": "string",
                    "store": "yes",
                    "analyzer": "keyword"
                },
                "meta": {
                    "properties": {
                        "content": {
                            "type": "string",
                            "store": "yes"
                        }
                    }
                }       
            }
        }
    }
}

如果我使用REST Api将其放在服务器中,则可以正常工作;如果我调用/ maincontentindex / rendition /
_mapping,我将获得上述结构(即使没有数据)。

但是在目录下,我只得到一个404,如果我插入任何东西,那只是通常的动态映射。


问题答案:

映射和模板之间有区别。

映射包含您的字段以及您如何在elasticsearch中索引/存储它们。它们引用特定的索引和类型(或使用_default_特殊类型时,在同一索引中有多个类型)。您可以在创建索引时通过create
index api
或通过put映射api提交映射,以修改现有索引的映射。

索引模板是一种将映射和索引设置自动应用于将来将要创建的,名称与指定模式匹配的索引的方法。假设映射是索引模板的一部分。索引模板也可以包含多种类型和索引设置的映射。

如果您有索引模板,则可以将其放在templates参考资料中提到的下方。如果您有类型的映射,则需要将其放在mappings目录下。

您粘贴到问题中的json是一个索引模板,它需要放在该templates文件夹下,而不是该文件夹下mappings。所描述的使用get mapping
api返回的内容不是您所说的模板本身,而是您在url中指定的索引/类型的当前映射(仅模板的映射部分)。

另外,我建议您使用elasticsearch提供的REST API。在文件系统上使用文件实际上看起来并不像Elasticsearch的处理方式。



 类似资料:
  • 我将ModelMapper与Spring一起使用。在我的控制器类中,我正在自动连接ModelMapper bean: 我想在控制器方法中的模型类和DTO之间进行显式映射,例如: 然后使用映射器映射类。 我的问题是,在每个控制器方法调用中添加显式映射是正确的吗?对象建模映射器的内存大小会开始增长吗? 另一个解决方案是在创建ModelMapperbean时只添加一次映射,但我认为在bean配置中添加映

  • 问题内容: 在我的应用程序中,我使用XML映射元数据作为注释的替代方法。到目前为止,它对于所有JPA注释都工作良好。但是对于审核,我使用的是Hibernate Envers。我在声明 @Audited @AuditTable(“ LOAN_APPLICANT_AUDIT”) 唯一的问题是如何将这些批注放入XML映射元数据形式。要求用户指定表列表,需要对其进行审核。 另外,他还应该能够根据需要配置A

  • 主要内容:映射类型,动态映射,映射参数映射是存储在索引中的文档的大纲。它定义数据类型,如或文档和规则中存在的字段的字符串和格式,以控制动态添加的字段的映射。 例如, 请求正文 响应 字段数据类型 Elasticsearch支持文档中字段的多种不同数据类型。以下数据类型用于在Elasticsearch中存储字段 - 核心数据类型 - 这些是几乎所有系统支持的基本数据类型,如整数,长整数,双精度,短整型,字节,双精度,浮点型,字符串,日期

  • 问题内容: 我有如下的域类 和 以下是我得到的错误 我浏览了互联网上的许多帖子,但无法解决此问题!到目前为止,我的猜测是这可能是由于我的两个带有映射的变量造成的。 任何帮助将不胜感激。 我现在正在使用以下回购 以下是在ES上打开它后得到的调试信息 问题答案: 编辑 : 我发现了什么是原始错误:ES中的插件将原始类型(即,您的Comment域中的属性)映射为“对象”,但是该属性未序列化为对象,因此E

  • 我需要从我的Android向Algolia发送数据,发送的数据应该是JSONObject格式(导入org.json.JSONObject) Algolia中的数据应采用此格式 所以在Android中,我这样设置代码 在这行代码中 那么我应该怎么做才能以JSONObject格式发送hashmap数据呢?

  • ES5.5文档给出了一个大容量索引的明确示例: 但它也说 endpoint为/_bulk、/{index}/_bulk和{index}/{type}/_bulk。当提供了索引或索引/类型时,默认情况下将在未显式提供它们的批量项上使用它们。 但我不能让这一切奏效。 > 我尝试了/myindex/bulkendpoint,但元数据中没有指定类型。 我在指定了“_type”:“_default_”的情况