gpt4 book ai didi

elasticsearch - Elasticsearch-在所有字段上设置默认分析器

转载 作者:行者123 更新时间:2023-12-02 22:31:30 26 4
gpt4 key购买 nike

我有一个索引,映射会发生很大的变化。考虑一下,例如,我正在索引其他所有文章的Wikipedia infobox数据。 infobox中的数据不是结构化的,也不是统一的。因此,数据可以采用以下形式:

Data1- {
'title': 'Sachin',
'Age': 41,
'Occupation': Cricketer
}

Data2- {
'title': 'India',
'Population': '23456987654',
'GDP': '23',
'NationalAnthem': 'Jan Gan Man'
}

由于所有字段都不相同,并且我想在相关字段上应用“完成”字段,因此我正在考虑在所有字段上应用分析器。

索引时如何默认将分析器应用于每个字段?

最佳答案

您需要一个_default_模板作为索引,以便每当向其添加新字段时,这些string字段都将采用_default_模板的映射:

{
"template": "infobox*",
"mappings": {
"_default_": {
"dynamic_templates": [
{
"string_fields": {
"match": "*",
"match_mapping_type": "string",
"mapping": {
"type": "string",
"index": "analyzed",
"analyzer": "my_completion_analyzer",
"fielddata": {
"format": "disabled"
},
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed",
"ignore_above": 256
}
}
}
}
}
]
}
}
}

或者,如果您的索引不是每日/每周索引,则只需使用定义的 _default_映射创建一次即可:
PUT /infobox
{
"mappings": {
"_default_": {
"dynamic_templates": [
{
"string_fields": {
"match": "*",
"match_mapping_type": "string",
"mapping": {
"type": "string",
"index": "analyzed",
"analyzer": "my_completion_analyzer",
"fielddata": {
"format": "disabled"
},
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed",
"ignore_above": 256
}
}
}
}
}
]
}
}
}

关于elasticsearch - Elasticsearch-在所有字段上设置默认分析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37179466/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com