嗨,我正在使用Elastic Search
elasticsearch-0.90.2版本。我正在尝试使用jsonBuilder使用自定义分析器来映射分析器,同时创建索引时,它会抛出未找到分析器的异常。
设置 :-
XContentBuilder settings = XContentFactory.jsonBuilder()
.startObject()
.startObject("settings")
.startObject("analysis")
.startObject("analyzer")
.startObject("search_analyzer")
.field("tokenizer", "ngram_specification")
.field("type", "custom")
.field("filter", new String[]{ "ngram_specification"})
.endObject()
.endObject()
.startObject("ngram_specification")
.field("type", "nGram")
.field("min_gram", "2")
.field("max_gram", "5")
.endObject()
.endObject()
.endObject()
.endObject();
映射:-
XContentBuilder mapping = XContentFactory.jsonBuilder()
.startObject()
.startObject("sample")
.startObject("properties")
.startObject("email").field("type", "string").field("index", "analyzed").field("analyzer", "search_analyzer")
.endObject()
.endObject()
.endObject()
.endObject();
像这样创建索引:
CreateIndexRequest indexRequest = new CreateIndexRequest(indexName);
indexRequest.settings(settings);
indexRequest.mapping("sample", mapping);
CreateIndexResponse response = client.admin().indices().create(indexRequest).actionGet();
例外情况:
17:00:52,767 ERROR [STDERR] org.elasticsearch.index.mapper.MapperParsingException: mapping [3]
17:00:52,767 ERROR [STDERR] at org.elasticsearch.cluster.metadata.MetaDataCreateIndexService$1.execute(MetaDataCreateIndexService.java:289)
17:00:52,767 ERROR [STDERR] at org.elasticsearch.cluster.service.InternalClusterService$2.run(InternalClusterService.java:229)
17:00:52,767 ERROR [STDERR] at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.run(PrioritizedEsThreadPoolExecutor.java:95)
17:00:52,767 ERROR [STDERR] at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
17:00:52,767 ERROR [STDERR] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
17:00:52,767 ERROR [STDERR] at java.lang.Thread.run(Thread.java:662)
17:00:52,767 ERROR [STDERR] Caused by: org.elasticsearch.index.mapper.MapperParsingException: Analyzer [search_analyzer] not found for field [email]
17:00:52,767 ERROR [STDERR] at org.elasticsearch.index.mapper.core.TypeParsers.parseField(TypeParsers.java:100)
17:00:52,767 ERROR [STDERR] at org.elasticsearch.index.mapper.core.StringFieldMapper$TypeParser.parse(StringFieldMapper.java:151)
17:00:52,767 ERROR [STDERR] at org.elasticsearch.index.mapper.object.ObjectMapper$TypeParser.parseProperties(ObjectMapper.java:263)
17:00:52,767 ERROR [STDERR] at org.elasticsearch.index.mapper.object.ObjectMapper$TypeParser.parse(ObjectMapper.java:219)
17:00:52,767 ERROR [STDERR] at org.elasticsearch.index.mapper.DocumentMapperParser.parse(DocumentMapperParser.java:176)
17:00:52,767 ERROR [STDERR] at org.elasticsearch.index.mapper.MapperService.parse(MapperService.java:380)
17:00:52,767 ERROR [STDERR] at org.elasticsearch.index.mapper.MapperService.merge(MapperService.java:190)
17:00:52,767 ERROR [STDERR] at org.elasticsearch.cluster.metadata.MetaDataCreateIndexService$1.execute(MetaDataCreateIndexService.java:286)]
任何人都可以告诉这种方法中的错误吗?
我找到了解决方案。在“设置”中,如果您使用“索引”而不是“设置”,那么它将正常工作。
这是错误的:
XContentBuilder settings = XContentFactory.jsonBuilder()
.startObject()
.startObject("settings") // "settings"
.startObject("analysis")
但是这样 做 :
XContentBuilder settings = XContentFactory.jsonBuilder()
.startObject()
.startObject("index") // "index" instead of "settings"
.startObject("analysis")
问题内容: 我正在努力完成索引创建这一简单任务,目标是使用分析器和字段映射创建索引。当我使用分析器创建索引时,我可以通过分析api调用与分析器通信,但是当我添加映射信息时,创建索引调用失败,并显示“字段[$ field]]找不到Analyzer [analyzer1]”,我创建了一个脚本来显示问题: 问题答案: 我相信您的问题是这些设置需要嵌套在JSON的一个节点内,而不是您所拥有的嵌套在一个节点
我使用的是弹性搜索版本7.1.0和NEST 6.7.0以及ElasticSearch.NET 6.7.0。当我试图创建索引时,我出现了一个错误。 这是我的代码,我在NEST和ElasticSearch.NET 6.4.0版上使用了相同的代码,并且运行良好 null 代码400来自:PUT/local_brainbank_index。servererror:type:mapper_parsing_e
我试图在map()中使用filter(),但我得到了这个火花异常: RDD转换和操作只能由驱动程序调用,不能在其他转换内部调用;例如,rdd1。地图(x)= 我知道火花不允许嵌套转换/动作/RDD,所以有人可以给我一个建议,如何替代它(没有嵌套转换或动作),我有一个RDD它的元组是这样的: 我试着映射它,给它一个列表作为参数,这个列表包含javaPairRDD这样的: 这些行指的是修改RDD()函
问题内容: 我想要对Elasticsearch中已存在的索引进行以下设置和映射设置: 我试图添加以下两行代码: 但这是结果: 任何人?非常感谢, 斯汀 这似乎可行: 问题答案: 如果在发送更改后查看设置,您会发现分析仪不存在。实际上,您不能在实时索引上更改设置的“分析”部分。最好使用所需的设置来创建它,否则您可以将其关闭: 关闭索引后,您可以发送新设置。之后,您可以重新打开索引: 关闭索引后,它不
问题内容: 代码在Scala中。它与Java代码极为相似。 我们的地图索引器用于创建索引的代码:https : //gist.github.com/a16e5946b67c6d12b2b8 上面的代码用于创建索引和映射的实用程序:https : //gist.github.com/4f88033204cd761abec0 Java给出的错误:https : //gist.github.com/
我有一个奇怪的错误:我有一个使用Hibernate的注释类。一切都很好,直到我开始这样介绍日志: 产生的错误是: [错误]原因:org。冬眠MappingException:无法确定组织的类型。slf4j。Logger,位于table:container,用于列:[org.hibernate.mapping.Column(Logger)] 根据我的理解,在这种情况下,静态场应该是合适的。那么为什么