"analysis": { "analyzer": { "my_analyzer": { "type": "custom", "tokenizer": "ik_max_word", "filter": [ "lowercase" ], "char_filter": [] } }, "normalizer": { "my_normalizer": { "type": "custom", "filter": [ "lowercase", "asciifolding" ] } } } },
时间: 2023-12-16 22:04:29 浏览: 143
这段代码看起来是一个 Elasticsearch 的索引配置文件,其中定义了一个名为 "my_analyzer" 的自定义分析器,使用了 "ik_max_word" 分词器和 "lowercase" 过滤器。此外还定义了一个名为 "my_normalizer" 的自定义规范化器,使用了 "lowercase" 和 "asciifolding" 过滤器。这些分析器和规范化器可用于搜索引擎在对文本进行索引和搜索时进行分词和规范化处理。
相关问题
"tagString": { "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_max_word" },analyzer和search_analyzer如何配置两种分词器
要配置analyzer和search_analyzer使用两种不同的分词器,你可以按照以下方式进行设置:
首先,创建一个自定义的分析器,在该分析器中指定使用的分词器类型。你可以根据需要选择不同的分词器,比如ik_max_word和standard等。
下面是一个示例配置,其中analyzer使用了ik_max_word分词器,而search_analyzer也使用了ik_max_word分词器:
```
PUT your_index_name
{
"settings": {
"analysis": {
"analyzer": {
"custom_analyzer": {
"type": "custom",
"tokenizer": "ik_max_word",
"filter": [
"lowercase"
]
}
}
}
},
"mappings": {
"properties": {
"tagString": {
"type": "text",
"analyzer": "custom_analyzer",
"search_analyzer": "custom_analyzer"
}
}
}
}
```
在上述示例中,我们先创建了一个名为`your_index_name`的索引。然后,我们在`analysis`部分定义了一个名为`custom_analyzer`的自定义分析器,指定了`tokenizer`为`ik_max_word`分词器,并使用`lowercase`过滤器将文本转换为小写。接下来,在`mappings`部分中,我们定义了一个名为`tagString`的字段,并将其类型设置为`text`。最后,我们将`analyzer`和`search_analyzer`都设置为`custom_analyzer`,以使用我们自定义的分析器。
通过这样的配置,当你索引文档时,会使用`custom_analyzer`对`tagString`字段进行分析处理,并在搜索时也会使用相同的分析器进行查询匹配。这样可以确保索引和搜索过程中使用相同的分词器,从而保持一致性。
ES中已有数据如何对某一个字段修改ik 分词策略,从default改为ok max word
在 Elasticsearch 中修改字段的分词策略需要重新创建该字段的索引并指定新的分词器。以下是一些步骤:
1. 停止写入操作,并备份数据。在修改索引前,需要停止写入操作以避免数据丢失或损坏。同时,应该备份索引以便出现问题时可以还原数据。
2. 创建一个新的分词器。在 Elasticsearch 中,分词器是用于将文本转换为单独的词汇单元的组件。您可以使用标准分词器或在此基础上进行自定义。要创建一个新的分词器,您可以使用以下命令:
```
PUT /my_index
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": ["lowercase", "stop", "ok_max_word"]
}
},
"filter": {
"ok_max_word": {
"type": "ngram",
"min_gram": 1,
"max_gram": 2
}
}
}
}
}
```
这里我们创建了一个名为“my_analyzer”的新分词器,它使用标准分词器和两个过滤器(lowercase和stop)以及一个名为“ok_max_word”的新过滤器。
3. 重新索引字段。要将现有字段与新分词器一起重新索引,请使用以下命令:
```
POST /_reindex
{
"source": {
"index": "my_index"
},
"dest": {
"index": "my_new_index"
},
"script": {
"source": "ctx._source.my_field = ctx._source.my_field",
"lang": "painless"
}
}
```
这里我们将“my_index”索引中的所有文档重新索引到“my_new_index”索引中,并在此过程中运行一个脚本以更新“my_field”字段。
4. 更新映射。最后,您需要更新映射以使用新的分词器。使用以下命令:
```
PUT /my_new_index/_mapping
{
"properties": {
"my_field": {
"type": "text",
"analyzer": "my_analyzer"
}
}
}
```
这里我们为“my_field”字段指定了新的分词器“my_analyzer”。
完成以上步骤后,您的“my_field”字段将使用新的分词器“my_analyzer”。请注意,这可能需要一些时间来完成,具体取决于您的索引大小。
阅读全文