- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在尝试重新创建 this example或多或少地使用 Java API。
我认为我需要的只是向索引添加一个映射,但 Java API 文档并不清楚如何做到这一点。
请告诉我如何在 Java 中创建 the equivalent of this from the example in the documentation 的映射:
curl -X PUT localhost:9200/test/tweet/_mapping -d '{
"tweet" : {
"_ttl" : { "enabled" : true, "default" : "1d" }
}
}'
这是我的代码:
package foo;
import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
import java.io.IOException;
import org.elasticsearch.action.admin.indices.create.CreateIndexRequestBuilder;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequestBuilder;
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse;
import org.elasticsearch.action.get.GetRequestBuilder;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexRequestBuilder;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.ImmutableSettings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.xcontent.XContentBuilder;
public class MyTestClass {
private static Client getClient() {
ImmutableSettings.Builder settings = ImmutableSettings.settingsBuilder();
TransportClient transportClient = new TransportClient(settings);
transportClient = transportClient.addTransportAddress(new InetSocketTransportAddress("localhost", 9300));
return (Client) transportClient;
}
public static void main(String[] args) throws IOException, InterruptedException {
final Client client = getClient();
// Create Index and set settings and mappings
final String indexName = "test";
final String documentType = "tweet";
final String documentId = "1";
final String fieldName = "foo";
final String value = "bar";
IndicesExistsResponse res = client.admin().indices().prepareExists(indexName).execute().actionGet();
if (res.isExists()) {
DeleteIndexRequestBuilder delIdx = client.admin().indices().prepareDelete(indexName);
delIdx.execute().actionGet();
}
CreateIndexRequestBuilder createIndexRequestBuilder = client.admin().indices().prepareCreate(indexName);
// MAPPING GOES HERE
// createIndexRequestBuilder.addMapping(documentType, WHATEVER THE MAPPING IS);
// MAPPING DONE
createIndexRequestBuilder.execute().actionGet();
// Add documents
IndexRequestBuilder indexRequestBuilder = client.prepareIndex(indexName, documentType, documentId);
// build json object
XContentBuilder contentBuilder = jsonBuilder().startObject().prettyPrint();
contentBuilder.field(fieldName, value);
indexRequestBuilder.setSource(contentBuilder);
indexRequestBuilder.execute().actionGet();
// Get document
System.out.println(getValue(client, indexName, documentType, documentId, fieldName));
Thread.sleep(10000L);
// Try again
System.out.println(getValue(client, indexName, documentType, documentId, fieldName));
}
protected static String getValue(final Client client, final String indexName, final String documentType,
final String documentId, final String fieldName) {
GetRequestBuilder getRequestBuilder = client.prepareGet(indexName, documentType, documentId);
getRequestBuilder.setFields(new String[] { fieldName });
GetResponse response2 = getRequestBuilder.execute().actionGet();
String name = response2.getField(fieldName).getValue().toString();
return name;
}
}
最佳答案
最后一天的谷歌搜索得到了返回。坦率地说,elasticsearch 的 Java API 文档可以使用一些端到端的示例,更不用说 JavaDoc...
这是一个正在运行的示例。您必须在 localhost 上运行一个节点才能使其正常工作!
package foo;
import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
import java.io.IOException;
import org.elasticsearch.action.admin.indices.create.CreateIndexRequestBuilder;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequestBuilder;
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse;
import org.elasticsearch.action.get.GetRequestBuilder;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexRequestBuilder;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.ImmutableSettings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.xcontent.XContentBuilder;
public class MyTestClass {
private static final String ID_NOT_FOUND = "<ID NOT FOUND>";
private static Client getClient() {
final ImmutableSettings.Builder settings = ImmutableSettings.settingsBuilder();
TransportClient transportClient = new TransportClient(settings);
transportClient = transportClient.addTransportAddress(new InetSocketTransportAddress("localhost", 9300));
return transportClient;
}
public static void main(final String[] args) throws IOException, InterruptedException {
final Client client = getClient();
// Create Index and set settings and mappings
final String indexName = "test";
final String documentType = "tweet";
final String documentId = "1";
final String fieldName = "foo";
final String value = "bar";
final IndicesExistsResponse res = client.admin().indices().prepareExists(indexName).execute().actionGet();
if (res.isExists()) {
final DeleteIndexRequestBuilder delIdx = client.admin().indices().prepareDelete(indexName);
delIdx.execute().actionGet();
}
final CreateIndexRequestBuilder createIndexRequestBuilder = client.admin().indices().prepareCreate(indexName);
// MAPPING GOES HERE
final XContentBuilder mappingBuilder = jsonBuilder().startObject().startObject(documentType)
.startObject("_ttl").field("enabled", "true").field("default", "1s").endObject().endObject()
.endObject();
System.out.println(mappingBuilder.string());
createIndexRequestBuilder.addMapping(documentType, mappingBuilder);
// MAPPING DONE
createIndexRequestBuilder.execute().actionGet();
// Add documents
final IndexRequestBuilder indexRequestBuilder = client.prepareIndex(indexName, documentType, documentId);
// build json object
final XContentBuilder contentBuilder = jsonBuilder().startObject().prettyPrint();
contentBuilder.field(fieldName, value);
indexRequestBuilder.setSource(contentBuilder);
indexRequestBuilder.execute().actionGet();
// Get document
System.out.println(getValue(client, indexName, documentType, documentId, fieldName));
int idx = 0;
while (true) {
Thread.sleep(10000L);
idx++;
System.out.println(idx * 10 + " seconds passed");
final String name = getValue(client, indexName, documentType, documentId, fieldName);
if (ID_NOT_FOUND.equals(name)) {
break;
} else {
// Try again
System.out.println(name);
}
}
System.out.println("Document was garbage collected");
}
protected static String getValue(final Client client, final String indexName, final String documentType,
final String documentId, final String fieldName) {
final GetRequestBuilder getRequestBuilder = client.prepareGet(indexName, documentType, documentId);
getRequestBuilder.setFields(new String[] { fieldName });
final GetResponse response2 = getRequestBuilder.execute().actionGet();
if (response2.isExists()) {
final String name = response2.getField(fieldName).getValue().toString();
return name;
} else {
return ID_NOT_FOUND;
}
}
}
关于java - 从 Java 向类型添加映射 - 我该怎么做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22071198/
stackoverflow如何得知JavaScript无法正常工作,并能够在页面顶部通知用户? 是否可以判断脚本是否未加载或产生错误,然后仍然能够使用JavaScript生成错误消息? 最佳答案
Xcode 项目方案共享...如何做到这一点? 当我将 Xcode 项目提交到 SVN 时,我发现我创建的方案保存在我的用户名文件夹下,例如 abc.xcodeproj/xcuserdata/_my_
我有这个 SQL: DROP TABLE MISSINGTABLE; CREATE TABLE MISSINGTABLE ( TABLE_NAME VARCHAR2 (70), DESCRIP
我是PHP OOP的初学者,并对使用PHP处理错误的正确方法有些疑问。 例如看这个功能: public function deleteFileFromDisk($fileNameToBeDeleted
YouTube上有很多视频,我们希望为网站访问者提供自动的YouTube成绩单对齐方式。我们想要的几乎就像this example。 但是,我们希望逐个句子对齐,而不是逐个单词自动对齐,例如this
假设,我有 IAsynchronous 接口(interface),它支持两种执行某些操作的方法(“开始/结束”模式): IAsyncResult BeginOperation(AsyncCallba
Hardware Product 1 Product 2 Product 3 Product 4 Product 5 我有这样的结构,我想做一个重新排序界面,用户可以通过单击向上箭头在层次结构中向
假设,我有 IAsynchronous 接口(interface),它支持两种执行某些操作的方法(“开始/结束”模式): IAsyncResult BeginOperation(AsyncCallba
我正在使用 Silverlight 2.0 Unleashed + Silverlight 4.0 Unleashed 学习 Silverlight,好吧,我只是在玩弄它:-) 作为其中的一部分,我正
有人可以解释一下我还是链接-我有512x512图标,但我不知道我需要创建什么图标大小以及如何将它们添加到我的iOS应用中。我需要什么尺寸以及如何添加尺寸? 最佳答案 简而言之:非视网膜iPhone或i
我想在 Java 中模拟以下情况,但我陷入困境: 特别是与客户、预订、航类预订和巴士预订相关的部分。我想要一组客户对象,每个对象都有自己的预订列表(可以是航类预订或巴士预订)。 我计划像下面的测试代码
我在 opencv、Pillow、ImageMagick、subprocess 和 ffmpeg 之间摇摆,作为操作图形数据的一种方式。 ImageMagick 看起来不错而且功能相当强大,但我在 W
我想做类似的事情 SELECT t.subtitle FROM temp t LEFT JOIN ep e ON e.subtitle=t.subtitle AND e.epi
Frame[] test = new Frame[3] {{2,5},{3,6},{4,7}}; 数组初始化器只能用在变量或字段初始化器中。尝试改用新表达式。 这怎么可能? 最佳答案 这里的问题是文字
我不知道如何正确创建第一个返回。它会像这样工作,但问题是 searchtestarrayone 总是有不同的长度,而且它可能非常大。几周前开始了我的 Swift 之旅,所以下面的代码中可能有一些愚蠢的
我有这样的表: NameSteve Martin PhoneXXX Bank account654861/46147 我对表格的相同部
我有一个关于单选按钮的快速问题,以及当用户返回页面时如何设置它们。我现在想要的是能够在他们返回页面时显示所选项目。同一组中有几个,所以我不能使用 getElementByID(遗憾!)。 这是我的 H
我做了一些事情: class Tuple1 { private T1 a; private T2 b; public Tuple1(T1 a, T2 b) {
我目前正在研究我在大学的期末项目,它看起来像 instagram。在 instagram android 应用程序中,您可以点击并按住图像和 boom,显示弹出窗口。但我不知道该怎么做! 最佳答案 您
我正在使用来自 mourner/suncalc 的函数这让我可以得到我们太阳的当前位置。使用 getPosition(),我想在图像上或使用纯 CSS(当然可以缩放到不同的屏幕分辨率和方向)创建动画,
我是一名优秀的程序员,十分优秀!