我有弹性搜索(java客户端)的问题,因为我无法存储信息,因为我想存储它。这就是我所做的:
首先,我创建了我的设置。设置应用于索引创建。
Settings settings = settingsBuilder().loadFromSource(jsonBuilder()
.startObject()
.startObject("analysis")
.startObject("char_filter")
.startObject("&_to_and")
.field("type", "mapping")
.array("mappings", "&=> and ", "\"=> . ")
.endObject()
.endObject()
.startObject("filter")
.startObject("my_stopwords")
.field("type", "stop")
.field("stopwords_path", "stopwords/stop_" + lang + ".txt")
.endObject()
.startObject("stemmer")
.field("type", "stemmer")
.field("language", language)
.endObject()
.endObject()
.startObject("analyzer")
.startObject("my_analyzer")
.field("type", "custom")
.array("char_filter", "html_strip", "&_to_and")
.field("tokenizer", "standard")
.array("filter", "stemmer", "lowercase", "my_stopwords")
.endObject()
.endObject()
.endObject()
.endObject().string()).build();
正如你所看到的,我创建了我自己的设置" stop_words"在索引中插入任何内容之前还需要考虑一些事项。
除此之外,我还为在这样的索引中创建的文档中的字段创建了以下映射:
XContentFactory.jsonBuilder().startObject()
.startObject("properties")
.startObject("words")
.field("type", "string")
.field("index", "analyzed")
.field("analyzer", "my_analyzer")
.endObject()
.endObject()
.endObject();
创建索引时会应用这两个内容,如下所示:
CreateIndexRequestBuilder createIndexRequestBuilder = client.admin()
.indices()
.prepareCreate(indexName)
.setSettings(settings)
.addMapping(documentType, getWordstype());
问题在于我无法看到所有这些规则都应用于索引中,因为我已经查看了索引中存储的信息,并且没有应用任何内容。我错过了一步还是什么?我正确地创建了索引吗?过滤好吗?