indexing - 如何在 ElasticSearch 中创建索引时指定分析器

标签 indexing mapping elasticsearch analyzer

我想指定一个分析器,为其命名,并在创建索引时在映射中使用该名称。我迷路了,我的 ES 实例总是返回错误消息。

这大概是我想做的:

"settings": {
  "mappings": {
    "alfedoc": {
      "properties": {
        "id": { "type": "string" },
        "alfefield": { "type": "string", "analyzer": "alfeanalyzer" }
      }
    }
  },
  "analysis": {
    "analyzer": {
      "alfeanalyzer": {
        "type": "pattern",
        "pattern":"\\s+"
      }
    }
  }
}

但这似乎行不通; ES 实例总是返回一个错误,比如

MapperParsingException[mapping [alfedoc]]; nested: MapperParsingException[Analyzer [alfeanalyzer] not found for field [alfefield]];

我尝试将字典的 "analysis" 分支放在几个地方(在映射内部等),但无济于事。我想一个完整的工作示例(我现在找不到)也会帮助我。可能我遗漏了一些相当基本的东西。

最佳答案

“分析”位于“设置” block 中,在创建索引时位于“映射” block 之前或之后。

"settings": {
    "analysis": {
        "analyzer": {
            "alfeanalyzer": {
                "type": "pattern",
                "pattern": "\\s+"
            }
        }
    }
},
"mappings": {
    "alfedoc": { ... }
}

这是一个很好的完整示例:Example 1

关于indexing - 如何在 ElasticSearch 中创建索引时指定分析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18237817/

相关文章:

c - 使用 mmap 和 mapfile 的 Posix-C 程序出现段错误

vector - 为什么迭代 i32 的向量会引用 i32 (&i32)?

java - 以声明方式将 JavaObject 映射到 Javabean

curl - Flume/Elasticsearch创建新索引并忽略显式创建的索引

elasticsearch - Logstash-Dissect的映射是否支持多个匹配?

elasticsearch - Elasticsearch 选择字段以聚合返回

更改 char *variable = {"1","2","3"} 索引

mysql - 如何使用 group by、where 和 order by 子句在大表(>38.700.000 行)上定义索引

python - 多维 numpy 数组中的数组索引

mysql - 为什么在MySQL中添加新索引时,索引的基数没有变化?