当前位置: 首页 > 知识库问答 >
问题:

无法在linux上使用ElasticSearch映射logstash

芮叶秋
2023-03-14

无法在linux上使用ElasticSearch映射logstash

我只是运行下面的命令,它显示了docker上所有正在运行的图像

sudo docker ps

输出:

CONTAINER ID    IMAGE             COMMAND                   CREATED           STATUS           PORTS                    NAMES
e14ace6bd419    a962b6541416      "/bin/bash /usr/loca…"    23 hours ago      Up 22 hours      0.0.0.0:5601->5601/tcp   trusting_chatterjee
00e6822bb991    28259852697e      "/usr/local/bin/dock…"    23 hours ago      Up 23 hours      9200/tcp, 9300/tcp       friendly_roentgen

我只想将logstash链接到弹性搜索并尝试运行以下命令

命令:

 sudo docker run -d --rm -it -v /home/sabharanikumar/logstash.conf e95781358676

输出:

989e2a8f4d9fd972c4f2102d726a68877c989b546800899abbb8c382fb62f04c

logstash。形态:

input
{
  stdin{}
}
output
{
  elasticsearch{ hosts => ["localhost:9200"] } 
}

日志日志:

[2019-08-23T09:40:53833][WARN][logstash.outputs.elasticsearch]试图恢复与已死亡ES实例的连接,但出现错误。{:url=

我运行了sudo docker ps,但logstash正在列出。

我错过了什么吗?是否有任何地方需要更改主机值?

共有1个答案

班凌
2023-03-14

正如@Mihai在评论中指出的,“localhost:9200”是不正确的。logstash容器将尝试在端口9200上与其自身通信,但没有任何内容正在侦听。

我看到的第二个问题是您将logstash配置文件作为参数(或命令)传递给docker。此外,您应该避免使用--link选项,因为它已被弃用并且更喜欢网络生成。

换句话说,命令应该如下所示:

docker network create \
    --driver bridge \
    --subnet=172.100.0.0/16 \
    --gateway=172.100.0.1 \
    my_elk_net

然后使用--network=my_elk_net选项启动两个docker容器。e、 g。

docker run -d \
    --name elasticsearch \
    --name my_elk_net \
    <ElasticSearchIMAGEID>

docker run -d \
    --name logstash \
    --network my_elk_net \
    -v "/home/arrchana/logstash.conf:/usr/share/logstash/config/logstash.yml:ro"
    <LogstashIMAGEID>

你的弹性搜索现在应该是这样的:

input
{
  stdin{}
}
output
{
  elasticsearch{ hosts => ["elasticsearch:9200"] } 
}

或者,您可以使用docker compose并避免创建网络。docker compose的一个非常基本的例子。yml,应该对你有用,应该是这样的:

version: '3.7'

services:
  elasticsearch:
    image: image_image

  logstash:
    image: logstash_image
    volumes:
      - /home/arrchana/logstash.conf:/usr/share/logstash/config/logstash.yml:ro
    depends_on:
     - elasticsearch
 类似资料:
  • 我正在尝试创建弹性贴图 但我得到以下错误: [mapper_parsing_exception][agent_id]的映射定义有不受支持的参数:[field ddata: true]

  • 我尝试使用mockito从amazon aws(com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper)模拟DynamoDBMapper。这在我的本地机器上运行得很好,但在jenkins上运行时出现以下错误 “Mockito无法模拟此类:class com.amazonaws.services.dynamodbv2.dataMod

  • 主要内容:映射类型,动态映射,映射参数映射是存储在索引中的文档的大纲。它定义数据类型,如或文档和规则中存在的字段的字符串和格式,以控制动态添加的字段的映射。 例如, 请求正文 响应 字段数据类型 Elasticsearch支持文档中字段的多种不同数据类型。以下数据类型用于在Elasticsearch中存储字段 - 核心数据类型 - 这些是几乎所有系统支持的基本数据类型,如整数,长整数,双精度,短整型,字节,双精度,浮点型,字符串,日期

  • 问题内容: 具有以下映射: 如果我添加以下代码,即使它与映射不匹配(丢失)也可以完美地工作,但ES不会抱怨。 如果我添加以下条目,它也可以工作。 似乎该映射未对我添加的元素生效。尝试映射类型时我做错了什么? 问题答案: 这是Elasticsearch的默认行为,在大多数情况下是理想的。但是对于您的情况,如果您不想允许索引未在映射中定义的字段,则需要更新映射并将其属性设置为。基本上,您的映射定义应如

  • 问题内容: 我正在努力完成索引创建这一简单任务,目标是使用分析器和字段映射创建索引。当我使用分析器创建索引时,我可以通过分析api调用与分析器通信,但是当我添加映射信息时,创建索引调用失败,并显示“字段[$ field]]找不到Analyzer [analyzer1]”,我创建了一个脚本来显示问题: 问题答案: 我相信您的问题是这些设置需要嵌套在JSON的一个节点内,而不是您所拥有的嵌套在一个节点

  • 问题内容: 我有一个要在elasticSearch上建立索引的文档,该文档包含一些我事先不知道的动态键,例如下面的示例中的“ spanish”或“ french” 我使用的是DSL elastic4s为了使我的映射(通过在DSL的createIndex),但我找不到如何创建,使用这个库的基础上,“匹配”选项动态映射(如建议在这里),在为了为路径content.title下存储的每种语言指定不同的分