我有一个法语单词索引。我想在索引属性上应用一个分析器。假设我有一个标题属性,我想将其视为“法国属性”。我试过这个(在基巴纳):
PUT thing/_mappings/thing
{
"properties": {
"title": {
"type": "text",
"analyzer": "french",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
但它导致:
{
"error": {
"root_cause": [
{
"type": "illegal_argument_exception",
"reason": "Mapper for [title] conflicts with existing mapping in other types:\n[mapper [title] has different [analyzer]]"
}
],
"type": "illegal_argument_exception",
"reason": "Mapper for [title] conflicts with existing mapping in other types:\n[mapper [title] has different [analyzer]]"
},
"status": 400
}
我不明白为什么我会有这个错误。如果我显示映射(GET thing/u mappings),它不包含现有的分析器(除非我误解了什么):
// ...
"title": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
如何将我的
title
属性视为法国属性?(来源:https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-lang-analyzer.html)
如果在创建字段时未指定,则不允许更改标题字段的分析器,默认情况下,标题字段是标准的。
您需要删除索引,更改映射以满足您的需求,然后重新索引数据。
另一种解决方案是使用适当的分析器向标题字段添加另一个子字段:
PUT thing/_mappings/thing
{
"properties": {
"title": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
},
"french": { <--- add this
"type": "text",
"analyzer": "french"
}
}
}
}
}
运行此操作后,您无需重新上传所有1GB数据,只需调用
POST thing/_update_by_query
以拾取新的子字段。
第二种方法的唯一缺点是,如果不需要使用标准分析器的标题字段,则最终得到的分析数据比需要的多。由你决定。
问题内容: 我正在使用ElasticSearch 1.5.2,希望具有以下设置: 我应该在哪里添加它们?我的意思是在创建索引之前还是之后? 通过在线搜索,我发现了一些类似的方法 但是我有2个问题, 我收到编译错误:ImmutableSettings.builder类型的方法loadFromSource不适用于参数XContentBuilder 另外,我不知道如何将我的设置转换为这种格式。在哪里可以
在graphiql中,有一个描述字段,但它总是说“自我描述”。如何向架构添加描述?
问题内容: 我正在建立搜索,但需要使用不同的分析器分析1个字段。我的问题是,对于一个字段,我需要在其上安装一个分析器以进行词干分析(雪球),然后还需要一个分析器将完整的单词保留为一个标记(关键字)。我可以通过以下索引设置来使其工作: 在标题字段中搜索单个单词时出现问题。如果其中装有“帽子里的猫”,它将存储为“帽子里的猫”,但是如果我搜索猫,我什么也得不到。 这是否有可能实现?还是我需要有2个单独的
问题内容: 有没有一种方法可以将条件附加到值数组中? 例如,如果我的文档如下所示: 我想在其后面附加“ item4”和“ item5”。 我必须在2个查询中这样做吗?一个加载当前值列表,然后更新该列表?还是有一种更优雅的方式让我在一个查询中附加这些项目? 我正在尝试使用Elastic4s做到这一点: 为了使用上面的代码片段,我需要启用groovy脚本,而且我不确定如何对多个项目执行此操作。 任何想
问题内容: 索引文件如下: 我想要的是按平台计数和输出统计信息。为了进行计数,我可以将术语聚合作为字段进行计数: 这样,我就可以像预期那样将统计数据作为多个存储桶接收到。 现在,我还能以某种方式添加到这些存储桶中吗(以及用于统计的漂亮输出)?我附带的最好的看起来像: 实际上,它可以工作,并且在每个存储桶中返回非常复杂的结构: 当然,可以从此结构中提取平台的名称和网址(例如),但是是否有更干净,更简
索引文档如下: 我想要的是按平台计数和输出统计信息。对于计数,我可以使用带有的术语聚合作为字段进行计数: 通过这种方式,我以多个bucket的形式接收统计数据,看起来就像预期的那样{key:8,doc\u count:162511}。 现在,我可以以某种方式将和(用于漂亮的统计输出)添加到这些桶中吗?我带来的最好的看起来像: 实际上,它可以工作,并在每个桶中返回非常复杂的结构: 当然,平台的名称和