使用 Java API 定义自定义 ElasticSearch Analyzer [英] Define custom ElasticSearch Analyzer using Java API

查看:46
本文介绍了使用 Java API 定义自定义 ElasticSearch Analyzer的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Is there a way to create an index and specify a custom analyzer using the Java API? It supports adding mappings at index creation, but I can't find a way to do something like this without sending the JSON via HTTP PUT:

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(),据我所知.这样做的正确方法是什么?

I can build such a query using JSONBuilder, but I can't find no place in the API where to run it, CreateIndexRequest doesn't have anything I can use and neither does client.admin().indices(), as far as I can see. What's the right way to do this?

推荐答案

您可以使用 client.admin().indices().prepareCreate("twitter").setSettings(...).有多种方法可以构建设置.如果您需要,您可以从文本、地图或什至使用 jsonBuilder 加载它们:

You can set analyzer using client.admin().indices().prepareCreate("twitter").setSettings(...). There are several ways to build settings. You can load them from text, map or even use jsonBuilder if that's what you want:

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();

这篇关于使用 Java API 定义自定义 ElasticSearch Analyzer的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆