使用 Java API 定义自定义 ElasticSearch 分析器
有没有办法使用 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()
也没有。这样做的正确方法是什么?
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"]
}
}
}
}'
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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用
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:如果您在测试环境中,您还可以使用此项目,它将根据 Java 注释创建索引。
https://github.com/tlrx/elasticsearch-test
If you are on a test environnent you can also uses this project which will create your indexes based on Java annotations.
https://github.com/tlrx/elasticsearch-test