elasticsearch-analysis-kuromoji 的行为不是我所期望的

Behavior of elasticsearch-analysis-kuromoji is not what i expected

我一直在使用 elasticsearch-analysis-kuromoji 执行日文搜索,但我遇到了两个非常奇怪的行为,第一个是我搜索的字符不起作用,比如 - '输出交易'将不起作用,除非我将其作为“输出贸易易”传递,每个字符之间都有空格。 并且像ント这样的字符也没有被搜索到。

这是我的配置:

            .setSettings(ImmutableSettings.settingsBuilder().loadFromSource(jsonBuilder()
                    .startObject()
                    .startObject("analysis")
                            //
                    .startObject("tokenizer")
                    .startObject("kuromoji_user_dict")
                    .field("type", "kuromoji_tokenizer")
                    .field("mode", "extended")
                    .field("discard_punctuation", "false")
                    .endObject()
                    .endObject()
                            //
                    .startObject("analyzer")
                    .startObject(JAPANESE_LANGUAGE_ANALYSIS)
                    .field("type", "custom")
                    .field("tokenizer", "kuromoji_user_dict")
                    .endObject()
                    .endObject()
                            //

                    .endObject()
                    .endObject().string()));

我是不是配置错了,还是我需要一个不同的字符标记器,比如: '输出贸易和 nt'

谢谢

经过一些在线研究和 elasticsearch-analysis-kuromoji 团队的一些帮助,我找到了问题所在,即使我创建了分析器并告诉查询使用它,我也需要添加映射,例如所以:

XContentBuilder xbMapping =
        jsonBuilder()
                .startObject()
                .startObject(indexType)
                .startObject("properties")
                .startObject("source")
                .field("type", "string")
                .endObject()
                .startObject("text")
                .field("type", "string")
                .field("analyzer", JAPANESE_LANGUAGE_ANALYSIS)
                .endObject()
                .endObject()
                .endObject()
                .endObject();

elasticSearchClient.admin().indices()
        .preparePutMapping(indexName)
        .setType(indexType)
        .setSource(xbMapping)
        .execute().get();