我想从Storm将文档索引到Elasticsearch中,但我无法将任何文档索引到Elasticsearch中。
在我的拓扑中,我有一个KafkaSpout,它向EsBolt发出如下所示的json{“tweetid”:1,“text”:“hello”},该EsBolt是来自elasticsearch-hadoop库的本地bolt,它将Storm元组写入Elasticsearch(doc在这里:https://www.elastic.co/guide/en/Elasticsearch/hadoop/current/Storm.html)。以下是我的esbolt的配置:
Map conf = new HashMap();
conf.put("es.nodes","127.0.0.1");
conf.put("es.port","9200");
conf.put("es.resource","twitter/tweet");
conf.put("es.index.auto.create","no");
conf.put("es.input.json", "true");
conf.put("es.mapping.id", "tweetId");
EsBolt elasticsearchBolt = new EsBolt("twitter/tweet", conf);
前两个配置默认情况下都有这些值,但我选择显式设置它们。我也尝试过没有它们,得到同样的结果。
这就是我构建拓扑的方式:
TopologyBuilder builder = new TopologyBuilder();
builder.setSpout(TWEETS_DATA_KAFKA_SPOUT_ID, kafkaSpout, kafkaSpoutParallelism)
.setNumTasks(kafkaSpoutNumberOfTasks);
builder.setBolt(ELASTICSEARCH_BOLT_ID, elasticsearchBolt, elasticsearchBoltParallelism)
.setNumTasks(elasticsearchBoltNumberOfTasks)
.shuffleGrouping(TWEETS_DATA_KAFKA_SPOUT_ID);
return builder.createTopology();
在本地运行拓扑之前,我在Elasticsearch中创建了“Twitter”索引和该索引的映射“tweet”。如果我检索新创建的类型的映射(curl-xget'http://localhost:9200/twitter/_mapping/tweet'):
{
"twitter": {
"mappings": {
"tweet": {
"properties": {
"text": {
"type": "string"
},
"tweetId": {
"type": "string"
}
}
}
}
}
}
我在本地运行拓扑,这是我在处理元组时在控制台中得到的结果:
Processing received message FOR 6 TUPLE: source: tweets-data-kafka-spout:9, stream: default, id: {-8010897758788654352=-6240339405307942979}, [{"tweetId":"1","text":"hello"}]
Emitting: elasticsearch-bolt __ack_ack [-8010897758788654352 -6240339405307942979]
TRANSFERING tuple TASK: 2 TUPLE: source: elasticsearch-bolt:6, stream: __ack_ack, id: {}, [-8010897758788654352 -6240339405307942979]
BOLT ack TASK: 6 TIME: TUPLE: source: tweets-data-kafka-spout:9, stream: default, id: {-8010897758788654352=-6240339405307942979}, [{"tweetId":"1","text":"hello"}]
Execute done TUPLE source: tweets-data-kafka-spout:9, stream: default, id: {-8010897758788654352=-6240339405307942979}, [{"tweetId":"1","text":"hello"}] TASK: 6 DELTA:
因此元组似乎被处理了。然而,我没有任何文件索引在弹性搜索。
我想我在为EsBolt设置配置时做错了什么,可能遗漏了一个配置或其他什么。
只有达到es.storm.bolt.flush.entries.size指定的刷新大小后,文档才会被索引
或者,您可以设置触发队列刷新的刻度频率。
config.put(Config.TOPOLOGY_TICK_TUPLE_FREQ_SECS, 5);
默认情况下,es-hadoop根据es.storm.bolt.tick.tuple.flush参数在tick上刷新。
问题内容: 希望不使用Logstash将CSV文件索引到ElasticSearch。我正在使用高级库。 给定带有标题的CSV例如: 按字段索引所有数据的最佳方法是什么?最终我希望让每一行看起来像这样 问题答案: 使用较低级的库,这种任务比较容易:
问题内容: 如何在Elasticsearch中按数组索引查询/过滤? 我有一个像这样的文件: 我想搜索 LIN [0] 是否为“ UP”并且 LIN [1]是否 存在。 谢谢。 问题答案: 这看起来可能像hack,但是可以肯定地起作用。首先,我们将令牌计数类型与多字段一起应用以捕获令牌数量作为字段。因此,映射将如下所示- 链接-http: //www.elasticsearch.org/guide
主要内容:创建索引,删除索引,获取索引,测试索引存在,打开/关闭索引API,索引别名,索引设置,分析,索引模板,索引统计,刷新清除数据, 刷新索引这些API负责管理索引的所有方面,如设置,别名,映射,索引模板。 创建索引 此API可用于创建索引。 当用户将对象传递到任何索引时,可以自动创建索引,也可以在此之前创建索引。 要创建索引,只需要发送包含设置,映射和别名的发布请求,或者只发送一个没有正文的简单请求。 例如, 响应 或者,加上一些设置 - 请求正文 响应 或使用映射 - 请求正文 响应 或
我目前正在使用ElasticSearch(PHP客户端)构建一个电子商务系统搜索,但遇到了一个问题 我存储的数据是简单文本(如产品名称)和列表(如颜色、大小)的混合体 我遇到的问题是当产品没有任何颜色时 我有以下字段 所以当我发送一个产品时,它看起来是这样的 这就像预期的一样,但是当我尝试发送这样的东西时 它抛出了一个错误: {“error”:{“root_cause”:[{“type”:“map
问题内容: 我已经在RHEL7上安装了ES 7.5和Kibana 7.5,但是在启动Kibana并检查UI后,我看到了错误,“ Kibana服务器尚未准备好。” 检查Kibana日志,我发现它没有正确连接到ES。任何帮助表示赞赏! 这是 journalctl –unit kibana 的输出: Elasticsearch.yml Kibana.yml 另外,当我运行 ss -tunlp | gre
我已经在RHEL7上安装了ES 7.5和Kibana 7.5,但是在启动Kibana并检查UI之后,我看到了错误,“Kibana服务器还没有准备好。” 检查Kibana日志,我看到它没有正确连接到ES。感谢任何帮助! 以下是journalctl的输出——单位kibana: 弹性搜索。yml 基巴纳。yml 此外,当我在Kibana启动期间运行ss-tunlp|grep 5601时,我看到Kiban