使用 ELK 和 docker,我需要重新启动每个服务。
docker ps告诉我我没有任何容器。
docker run -it --rm [...] --name es elasticsearch->Error response from daemon. The name "es" is already use by container [...]
所以我尝试删除所有容器:
docker ps -a -q | xargs docker rm->Cannot connect to the Docker daemon. Is the docker daemon running on this host?
容器还没有起来,但还在这里。
当然,我可以简单地更改容器的名称,但这是不对的。这意味着我正在运行容器。即使我重新启动服务器。
任何想法 ?
免责声明:我对 ELK Stack非常陌生,所以这个问题可能非常基本。
我现在正在设置 ELK 堆栈。我有以下关于ElasticSearch 的基本问题。
例如,Oracle 使用关系模型,Alfresco 使用“文档模型”,Apache Jackrabbit 使用“层次模型”
2.elasticsearch中存储的日志数据是持久的/永久的吗?或者ElasticSearch在一段时间后删除日志数据?
3.我们将如何管理/备份这些数据?
4.Elastic Search 中的日志/数据文件是人类可读的?
任何帮助/文档路径将不胜感激。
我正在运行 ElasticSearch 版本 6.2.3,并且我将文件中的堆大小增加到 4GB config\jvm.options。然后重新启动我的 ES,我如何确保我的 ES 正在使用修改后的堆大小运行。有没有命令可以验证ES的堆大小。
我正在 Windows 机器上运行我的 ES。
请找到我的配置详细信息。
## JVM configuration
################################################################
## IMPORTANT: JVM heap size
################################################################
##
## You should always set the min and max JVM heap
## size to the same value. For example, to set
## the heap to 4 GB, set:
##
## -Xms2g
## -Xmx2g
##
## See https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html
## for more information
##
################################################################
# Xms represents the initial size of total heap space
# …Run Code Online (Sandbox Code Playgroud) 我正在运行ELK 堆栈的实现,它非常简单且易于配置。
我可以使用 netcat 将 TCP 输入推送到堆栈,如下所示:
nc localhost 5000 < /Users/me/path/to/logs/appOne.log
nc localhost 5000 < /Users/me/path/to/logs/appOneStackTrace.log
nc localhost 5000 < /Users/me/path/to/logs/appTwo.log
nc localhost 5000 < /Users/me/path/to/logs/appTwoStackTrace.log
Run Code Online (Sandbox Code Playgroud)
但我无法让 Logstash 读取我在配置中指定的文件路径:
input {
tcp {
port => 5000
}
file {
path => [
"/Users/me/path/to/logs/appOne.log",
"/Users/me/path/to/logs/appOneStackTrace.log",
"/Users/me/path/to/logs/appTwo.log",
"/Users/me/path/to/logs/appTwoStackTrace.log"
]
type => "log"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => "elasticsearch:9200"
}
}
Run Code Online (Sandbox Code Playgroud)
以下是有关 Logstash 输入的堆栈的启动输出:
logstash_1 | [2019-01-28T17:44:33,206][INFO ][logstash.inputs.tcp ] Starting tcp input listener {:address=>"0.0.0.0:5000", …Run Code Online (Sandbox Code Playgroud) logstash docker-compose logstash-configuration elastic-stack
Elasticsearch 官方文档中有这样写Any reserved character can be escaped with a backslash "\*" including a literal backslash character: "\\"。
你能解释一下为什么这样查询吗
{
"query": {
"bool": {
"must": [
{
"regexp": {
"path": ".*test\/test.txt.*"
}
},
{
"match": {
"user_id": 1
}
}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
找不到这样的索引
{
"_index": "pictures",
"_type": "picture",
"_id": "wiskQ2kBi923Omj4U",
"_score": 1,
"_source": {
"user_id": 1,
"tag": [],
"text": "some text",
"path": "test/test.txt"
}
}
Run Code Online (Sandbox Code Playgroud) regex indexing elasticsearch elasticsearch-query elastic-stack
我正在使用高级 java rest 客户端(6.5),我需要根据某个日期范围过滤数据-让,我在同一索引中有这 4 个文档(添加了邮递员图像),而在 2 个文档中我没有 publish_date和 publish_end_date 字段,所以当我放置一个范围时,我需要介于这些范围和没有这些范围字段的文档之间的文档。
我从这个问题中得到了一些帮助 - 在 startDate 和 endDate 之间的 ElasticSearch (2.2) Java 过滤器如果存在,因为不推荐使用QueryBuilders.missingQuery所以我使用mustNot(QueryBuilders.existsQuery)通过从这里获取参考但它不起作用,我我没有得到结果。
当我只使用如下所示的范围查询时,它的工作正常 -
BoolQueryBuilder startDateQuery = new BoolQueryBuilder()
.must(QueryBuilders.rangeQuery("publish_date").lte("now"));
BoolQueryBuilder endDateQuery = new BoolQueryBuilder()
.must(QueryBuilders.rangeQuery("publish_end_date").gte("now"));
Run Code Online (Sandbox Code Playgroud)
当我只使用如下所示的 mustNot 查询时,我得到了想要的结果-
BoolQueryBuilder startDateQuery = new BoolQueryBuilder()
.mustNot(QueryBuilders.existsQuery("publish_date"));
BoolQueryBuilder endDateQuery = new BoolQueryBuilder()
.mustNot(QueryBuilders.existsQuery("publish_end_date"));
Run Code Online (Sandbox Code Playgroud)
但问题是当我结合下面的两个查询时,我没有得到任何结果(得到一个空数组)-
BoolQueryBuilder startDateQuery = new BoolQueryBuilder()
.must(QueryBuilders.rangeQuery("publish_date").lte("now"))
.mustNot(QueryBuilders.existsQuery("publish_date"));
BoolQueryBuilder endDateQuery = new BoolQueryBuilder()
.must(QueryBuilders.rangeQuery("publish_end_date").gte("now"))
.mustNot(QueryBuilders.existsQuery("publish_end_date"));
Run Code Online (Sandbox Code Playgroud)
我想要结果 3 中的所有 …
我可以通过传递索引名称、类型和 id 来删除文档,如下所示-
DeleteRequest deleteRequest = new DeleteRequest(data.getIndexName(),data.getType(),data.getUniqueId());
DeleteResponse deleteResponse = client.delete(deleteRequest);
Run Code Online (Sandbox Code Playgroud)
但是当我尝试通过仅给出索引名称来删除索引时,如下所示-(根据本文档)
DeleteRequest deleteRequest = new DeleteRequest(allData.getIndexName());
DeleteResponse deleteResponse = client.delete(deleteRequest);
Run Code Online (Sandbox Code Playgroud)
得到-
org.elasticsearch.action.ActionRequestValidationException: Validation Failed: 1: type is missing;2: id is missing;
Run Code Online (Sandbox Code Playgroud)
我尝试过类似的另一种方法(参考)
DeleteIndexRequest request = new DeleteIndexRequest(allData.getIndexName());
AcknowledgedResponse deleteIndexResponse = client.indices().delete(request, RequestOptions.DEFAULT);
Run Code Online (Sandbox Code Playgroud)
得到:
java.lang.NoSuchMethodError:
at org.elasticsearch.client.IndicesClient.delete(IndicesClient.java:93) ~[elasticsearch-rest-high-level-client-6.5.4.jar:6.4.3]
Run Code Online (Sandbox Code Playgroud)
我正在使用这个依赖项:
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>6.5.4</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
mvn依赖:树
[INFO] \- org.elasticsearch.client:elasticsearch-rest-high-level-
client:jar:6.5.4:compile
[INFO] +- org.elasticsearch:elasticsearch:jar:6.4.3:compile
[INFO] | +- org.elasticsearch:elasticsearch-core:jar:6.4.3:compile
[INFO] | +- org.elasticsearch:elasticsearch-secure-
sm:jar:6.4.3:compile
[INFO] | +- org.elasticsearch:elasticsearch-x- …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 ELK 来可视化我的日志文件。我尝试了不同的设置:
有人可以列出他们的差异以及何时使用哪种设置?如果不是这里,请把我指向正确的地方,比如超级用户或 DevOp 或服务器故障。
我的 ElasticSearch 6.5.2 索引看起来像:
{
"_index" : "searches",
"_type" : "searches",
"_id" : "cCYuHW4BvwH6Y3jL87ul",
"_score" : 1.0,
"_source" : {
"querySearched" : "telecom",
}
},
{
"_index" : "searches",
"_type" : "searches",
"_id" : "cSYuHW4BvwH6Y3jL_Lvt",
"_score" : 1.0,
"_source" : {
"querySearched" : "telecom",
}
},
{
"_index" : "searches",
"_type" : "searches",
"_id" : "eCb6O24BvwH6Y3jLP7tM",
"_score" : 1.0,
"_source" : {
"querySearched" : "industry",
}
Run Code Online (Sandbox Code Playgroud)
我想要一个返回这个结果的查询:
"result":
{
"querySearched" : "telecom",
"number" : 2
},
{
"querySearched" : "industry", …Run Code Online (Sandbox Code Playgroud) 我收到警报,指出 elasticsearch 有 2 个未分配的分片。我进行了以下 api 调用以收集更多详细信息。
curl -s http://localhost:9200/_cluster/allocation/explain | python -m json.tool
Run Code Online (Sandbox Code Playgroud)
下面的输出
"allocate_explanation": "cannot allocate because allocation is not permitted to any of the nodes",
"can_allocate": "no",
"current_state": "unassigned",
"index": "docs_0_1603929645264",
"node_allocation_decisions": [
{
"deciders": [
{
"decider": "max_retry",
"decision": "NO",
"explanation": "shard has exceeded the maximum number of retries [5] on failed allocation attempts - manually call [/_cluster/reroute?retry_failed=true] to retry, [unassigned_info[[reason=ALLOCATION_FAILED], at[2020-10-30T06:10:16.305Z], failed_attempts[5], delayed=false, details[failed shard on node [o_9jyrmOSca9T12J4bY0Nw]: failed recovery, failure RecoveryFailedException[[docs_0_1603929645264][0]: Recovery failed from …Run Code Online (Sandbox Code Playgroud) elastic-stack ×10
elk ×2
java ×2
logstash ×2
spring-boot ×2
docker ×1
elastica ×1
filebeat ×1
indexing ×1
kubernetes ×1
regex ×1
storage ×1