过滤器(StopWords,Stemmer ...)未应用于ElasticSearch索引

时间:2015-11-20 15:35:27

标签: java elasticsearch

我有弹性搜索(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());

问题在于我无法看到所有这些规则都应用于索引中,因为我已经查看了索引中存储的信息,并且没有应用任何内容。我错过了一步还是什么?我正确地创建了索引吗?过滤好吗?

0 个答案:

没有答案