【问题标题】:Define custom ElasticSearch Analyzer using Java API使用 Java API 定义自定义 ElasticSearch Analyzer
【发布时间】:2016-08-18 08:25:12
【问题描述】:

有没有办法使用 Java API 创建索引并指定自定义分析器?它支持在创建索引时添加映射,但如果不通过 HTTP PUT 发送 JSON,我找不到这样做的方法:

curl -XPUT localhost:9200/twitter?pretty=true -d '{
"analysis": {
       "analyzer": {
            "steak" : {
                "type" : "custom", 
                "tokenizer" : "standard",
                "filter" : ["snowball", "standard", "lowercase"]
            }
        }
    }
}'

我可以使用 JSONBuilder 构建这样的查询,但是我在 API 中找不到运行它的地方,CreateIndexRequest 没有我可以使用的任何东西,client.admin().indices() 也没有,就我而言可以看到。这样做的正确方法是什么?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您可以使用client.admin().indices().prepareCreate("twitter").setSettings(...) 设置分析器。有几种方法可以构建设置。如果你想要的话,你可以从文本、地图甚至使用 jsonBuilder 加载它们:

    client.admin().indices().prepareCreate("twitter")
                .setSettings(Settings.settingsBuilder().loadFromSource(jsonBuilder()
                    .startObject()
                        .startObject("analysis")
                            .startObject("analyzer")
                                .startObject("steak")
                                    .field("type", "custom")
                                    .field("tokenizer", "standard")
                                    .field("filter", new String[]{"snowball", "standard", "lowercase"})
                                .endObject()
                            .endObject()
                        .endObject()
                    .endObject().string()))
                .execute().actionGet();
    

    【讨论】:

    • 当我将分析器添加到字段时出现此错误 MapperParsingException [[value] 的映射定义具有不受支持的参数:[analyzer : delimeter_analyzer]]
    • 对于与我有同样愚蠢问题的其他人(在新的 Java API v7.6 中),您传递的设置 json 对象必须以“分析”开头,而不是“设置”...
    【解决方案2】:

    如果您在测试环境中,您还可以使用此项目,该项目将基于 Java 注释创建索引。 https://github.com/tlrx/elasticsearch-test

    【讨论】:

    • 干得好。我真的很怀念索引对象的 JAVA ES api POJO 映射....((C# 有一些不错的项目,比如实现该功能的 Nest
    猜你喜欢
    • 1970-01-01
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 2013-08-23
    相关资源
    最近更新 更多