当前位置: 首页 > 面试题库 >

elasticsearch将对象插入索引

符畅
2023-03-14
问题内容

我是Elasticsearch的新手,正在寻找使用Java API的帮助。我有一些领域对象,例如

@XmlRootElement

public class BasicActivity {

private String activityName;
private FullActivity activity;  
// Getters and setters
}

我已经创建了连接到节点的传输客户端

Client client = new TransportClient()
        .addTransportAddress(new InetSocketTransportAddress("192.168.0.198",9300));

有没有简单的方法将我的对象直接插入elasticsearch?

我看到了

IndexResponse response = client.prepareIndex("twitter", "tweet", "1")
                    .setSource(jsonBuilder()
                                .startObject()
                                    .field("user", "kimchy")
                                    .field("postDate", new Date())
                                    .field("message", "trying out Elastic     Search")
                                .endObject()
                              )
                    .execute()
                    .actionGet();

但是要做到这一点,我必须将每个对象都转换成json,这虽然不是我理想的情况。

如果我对它的工作方式(架构上)有误解,请告诉我,我在这里学习!

欢呼声,罗布


问题答案:

我认为您在正确的轨道上。当您不习惯Java API时,有时很难得到它。我认为随着时间的推移它将变得更好。

您必须将对象转换为Json才能将它们发送到ElasticSearch集群。 Gson是可以为您做到这一点的众多流行图书馆之一。

您上面显示的代码将创建一个索引。现在要将文档添加到该索引,请运行类似的内容。

   Tweet tweet = new Tweet();
   tweet.setId("1234");
   tweet.setMessage("message");

   IndexRequest indexRequest = new IndexRequest("twitter","tweet", tweet.getId());
   indexRequest.source(new Gson().toJson(tweet));
   IndexResponse response = client.index(indexRequest).actionGet();

签出BulkRequest一次为多个项目建立索引。一旦对象变得更加复杂,就需要创建Mappings。

我在《指南》中找到了很多很好的例子,但在ES Google
Group中
通常会找到更详细的例子。

我也必须推荐Head前端。它向您显示现有索引和项目。



 类似资料:
  • 问题内容: 我是Elasticearch的新手,并且已经尝试了2天,将一些数据插入Elasticearch。我在Google上发现有很多页面可以帮助创建索引(我不清楚“ index”,换句话说是“插入”吗?)然后很多地方给出了curl命令,但我确实没有知道在哪里执行这些代码行以插入数据。例: 我正在使用Window 7,并且已安装Java并成功运行elasticsearch。任何人都可以向我展示有

  • 问题内容: 试图让我了解BS的html构建。 我正在尝试插入新标签: 当我检查结果时,我得到: 因此,我要插入一个针对Websafe html进行了清理的字符串。 我希望看到的是: 如何在带有ID的位置3中插入新标签? 问题答案: 使用工厂方法创建新元素: 并插入:

  • 我试图在集合中插入一个对象,我重载了' 但我仍然得到以下错误: /home/joju/NetBeansProjects/cppu 1/main。cpp:51:对“domino::domino(int,int)”的未定义引用 build/Debug/GNU-Linux-x86/main。o:在函数`std::less::operator()(domino const)中 /usr/include/c

  • 问题内容: 我是Elasticsearch的新手,到目前为止一直在手动输入数据。例如,我做了这样的事情: 我现在有一个.json文件,我想将其索引到Elasticsearch中。我也尝试过类似的方法,但没有成功: 如何导入.json文件?我需要首先采取一些步骤来确保映射正确吗? 问题答案: 如果要使用带有curl的文件,则正确的命令是这样的: Elasticsearch是无模式的,因此您不一定需要

  • 我是Elasticsearch新手,在此之前一直在手动输入数据。例如,我做过这样的事情: 我现在有一个。json文件,我想将其索引到Elasticsearch中。我也尝试过这样的事情,但没有成功: 如何导入。json文件?我是否需要首先采取步骤来确保映射正确?

  • 问题内容: 我正在尝试使用Java将整个Java对象插入MongoDB集合中。我收到以下错误: 错误: Emplyoee.java(POJO) 主要方法类(test.java) 谁能解释我为什么收到此错误? 问题答案: 我有点困惑,不知道为什么您会首先想到这种方法。您需要了解的第一件事是如何将POJO映射到MongoDB文档。当前,您没有告诉系统(您的代码)如何执行该操作。 您可以为此使用映射库(