我使用以下命令test
通过PUT
请求创建索引:
PUT http://localhost:9250/test
{
"settings": {
"analysis": {
"char_filter": {
"&_to_and": {
"type": "mapping",
"mappings": ["& => and"]
}
},
"filter": {
"my_stopwords": {
"type": "stop",
"stopwords": ["the", "a"]
}
},
"analyzer": {
"my_analyzer": {
"type": "custom",
"char_filter": ["html_strip", "&_to_and"],
"tokenizer": "standard",
"filter": ["lowercase", "my_stopwords"]
},
"folding": {
"token_filters": ["lowercase", "asciifolding"],
"tokenizer": "standard",
"type": "custom"
}
}
}
},
"mappings": {
"tweet": {
"dynamic": "strict",
"properties": {
"author": {
"type": "string",
"index": "my_analyzer",
"store": true
},
"text": {
"type": "string",
"index": "folding",
"store": true
},
"timestamp": {
"type": "date",
"format": "yyyy-MM-dd'T'HH:mm:ssZ",
"store": true
}
}
}
}
}
但这返回以下错误:
{
"error": {
"root_cause": [
{
"type": "mapper_parsing_exception",
"reason": "wrong value for index [my_analyzer] for field [author]"
}
],
"type": "mapper_parsing_exception",
"reason": "Failed to parse mapping [tweet]: wrong value for index [my_analyzer] for field [author]",
"caused_by": {
"type": "mapper_parsing_exception",
"reason": "wrong value for index [my_analyzer] for field [author]"
}
},
"status": 400
}
我发送的json似乎有效。此错误的原因是什么?
我正在使用ES 2.2.0。
由于错误消息描述了自定义分析仪,例如
my_analyzer
不是index
映射中选项的有效值。根据文档,它只能采用的值是
没有
不要将此字段值添加到索引中。使用此设置,该字段将不可查询。
not_analyzed
将字段值不变地添加到索引中,作为一项。这是所有支持此选项的字段(字符串字段除外)的默认设置。not_analyzed字段通常与术语级查询一起用于结构化搜索。
分析
此选项仅适用于字符串字段,这是默认设置。首先分析字符串字段值,以将字符串转换为术语(例如,单个单词的列表),然后对其进行索引。在搜索时,查询字符串(通常)通过同一分析器传递,以生成与索引中的格式相同的术语。正是这个过程使全文搜索成为可能。
如果要为字段设置自定义分析仪,请使用分析仪选项
例:
{
"settings": {
"analysis": {
"char_filter": {
"&_to_and": {
"type": "mapping",
"mappings": ["& => and"]
}
},
"filter": {
"my_stopwords": {
"type": "stop",
"stopwords": ["the", "a"]
}
},
"analyzer": {
"my_analyzer": {
"type": "custom",
"char_filter": ["html_strip", "&_to_and"],
"tokenizer": "standard",
"filter": ["lowercase", "my_stopwords"]
},
"folding": {
"token_filters": ["lowercase", "asciifolding"],
"tokenizer": "standard",
"type": "custom"
}
}
}
},
"mappings": {
"tweet": {
"dynamic": "strict",
"properties": {
"author": {
"type": "string",
"analyzer": "my_analyzer",
"store": true
},
"text": {
"type": "string",
"analyzer": "folding",
"store": true
},
"timestamp": {
"type": "date",
"format": "yyyy-MM-dd'T'HH:mm:ssZ",
"store": true
}
}
}
}
}
我正在为我的硕士使用py elasticsearch dsl,我正在土耳其标题语料库中创建标题文档索引,我需要为土耳其语言实现一个自定义的小写分析器:https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-lowercase-tokenfilter.html#analysis-小写令牌过滤器 我试着这样做:
问题内容: 我想指定一个分析器,命名它,并在创建索引时在映射中使用该名称。我迷路了,我的ES实例总是向我返回一条错误消息。 大致来说,这就是我想要做的: 但这似乎行不通。ES实例总是返回一个错误,例如 我尝试将字典的分支放在多个位置(在映射等内部),但无济于事。我想一个完整的示例(到目前为止还找不到)可以帮助我。可能我缺少了一些基本知识。 问题答案: “分析”位于“设置”块中,在创建索引时位于“映
问题内容: 对于使用嵌套客户端的Elasticsearch非常新,我正在使用自定义分析器创建索引,但是在使用分析进行测试时,它似乎并未使用自定义分析器。主要没有Edgengram令牌出现。我缺少什么使我的自定义分析器成为索引的默认设置吗?当我使用elastichq检查映射时,它们会显示我的自定义分析器。 问题答案: 您已将自定义分析器添加到索引中,但是现在您需要将其应用到字段中。您可以在字段映射级
在Elasticsearch中,我想用我的自定义分析器索引一些字段。因此,首先,我将分析器添加到其他配置中 Liferay公司- 其他索引配置 覆盖类型映射 在Liferay Elasticsearch中添加此属性后,我重置了索引,重新启动了Liferay。Portal使用我的映射和分析器正确创建了一个新索引。然后我重新索引了我的文档。当我在Elasticsearch中搜索某物时,它会显示预期的结
我无法确定问题的原因,我不知道是分析器无效还是elasticsearch甚至找到了autocomplete-analyser.json文件。我该怎么解决这个?
问题内容: 我有一个现有的Elasticsearch索引,我想添加一个分析器,但是当我执行此命令时 我得到一个错误 {“错误”:“ IndexAlreadyExistsException [[nuxeo]已经存在]”,“状态”:400} 所以我必须在添加或刷新同义词文件之前删除索引不是很聪明。添加分析器的简单方法是吗?还是至少要刷新它?谢谢 问题答案: 您需要先关闭索引,更新分析器设置,然后再打开