社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

Val

Val 最近创建的主题
Val 最近回复了
3 年前
回复了 Val 创建的主题 » ElasticSearch无法工作(此页面不工作)[重复]

在最新版本(ES8)中,默认情况下会启用安全性(即SSL/TLS)。

如果您是从浏览器访问,只需使用 https 而不是 http :

https://localhost:9200
    ^
    |
 add this

最好的方法是利用 distance sorting 并检索最近的地理位置:

GET my-index/_search
{
  "size": 1,                                <--- return top 1
  "sort" : [
    {
      "_geo_distance" : {
          "location-field" : [-70, 40],     <--- center location
          "order" : "asc",                  <--- sorted by closest distance
          "unit" : "km",
          "mode" : "min",
          "distance_type" : "arc",
          "ignore_unmapped": true
      }
    }
  ],
  "query" : {
    "match_all" : {}
  }
}
3 年前
回复了 Val 创建的主题 » Elasticsearch推荐的最大内容长度

正如那句名言所说:这取决于……:-)

解决这个问题的经验性方法是测试不同的大小,看看哪一个提供了最好的吞吐量,同时仍然允许集群在高峰时间为用户请求提供服务。

6 年前
回复了 Val 创建的主题 » ElasticSearch聚合存储桶始终只显示10个结果

你需要给你的 terms 聚合:

Map<String, BucketStats> hourAggregations = new HashMap<>();
SearchResponse getResponse = client.prepareSearch( ElasticSearchConstants.INDEX ).setTypes( ElasticSearchConstants.TABLE)
        .addAggregation( AggregationBuilders.terms( "name")
                .field( "empId" )
-->             .size(100)
                .subAggregation( AggregationBuilders.stats( "stats" )
        .setQuery( query )
        .setFrom( 0 )
        .setSize( ( offset + 1 ) * 10 )
        .execute().actionGet();

这个 setSize() 呼叫只影响 hits 部分,即结果中的文档集,而不是聚合。我看你应该打电话 setSize(0) ,因为您只需要聚合值而不需要文档。

client.search() 别无选择。

但是,在检索单个文档时,可以使用 client.getSource() 而不是 client.get() .

7 年前
回复了 Val 创建的主题 » 如何使用ElasticSearch进行contains/like查询?

您可以尝试将搜索字符串放在像这样的双引号中,这样可以工作:

{
  "query": {
    "query_string": {
      "fields": [
        "Name",
        "Number",
        "ShortDescription"
      ],
      "query": "*\"Toner Cyan\"*"
    }
  }
}

此外,您应该知道搜索前缀通配符可能会带来灾难性的性能影响,具体取决于您拥有的数据量。我仍然相信你应该基于这个原因对NGRAMS进行索引。

7 年前
回复了 Val 创建的主题 » 更新ElasticSearch索引是否需要更新Kibana索引模式?
  1. 是的,如果您在ES中更改了索引映射,那么您需要进入kibana并刷新相关的索引模式。

  2. 现在,你需要进入基巴纳( Management > Index patterns ,选择索引模式,然后按窗口右上角的“刷新”按钮以获取映射更改。

还要注意,如果你更新了一些 text 字段以便 keyword 子字段,您还需要调用 _update_by_query API 在索引上重新索引所有文档中已更改的字段

7 年前
回复了 Val 创建的主题 » elasticsearch.logqueries在kibana配置中无效

这个 elasticsearch.logQueries Kibana 6.3中引入了设置,如图所示。 pull request

技术上讲,当呼叫 _bulk 终结点,内容类型头应为 application/x-ndjson 而不是 application/json as stated in their docs

最后一行数据必须以换行符结尾。每个换行符前面都可以有一个回车符。向此端点发送请求时,Content-Type头应设置为application/x-ndjson。

它不是JSON数组的原因是,当协调节点接收到批量请求时,它只需查看有多少行(即新行字符)就可以将其拆分为多个块,并将每个块发送到不同的节点进行处理。如果内容是JSON,协调节点将不得不全部解析它,对于几个兆字节的批量查询,它将对性能产生负面影响。

NDJSON 是一种存储或流式处理结构化数据的方便格式,可以一次处理一条记录。

6 年前
回复了 Val 创建的主题 » 如何在筛选出特定值的ElasticSearch中应用后过滤器?

你可以使用 bucket_selector 管道聚合以实现所需功能:

{
  "aggs": {
    "variable_grp": {
      "terms": {
        "field": "variable",
        "size": 200,
        "order": {
          "stats.avg": "asc"
        }
      },
      "aggs": {
        "stats": {
          "extended_stats": {
            "field": "value_num"
          }
        },
        "avg_gt_0": {
          "bucket_selector": {
            "buckets_path": {
              "avgStats": "stats.avg"
            },
            "script": "params.avgStats > 0"
          }
        }
      }
    }
  }
}
6 年前
回复了 Val 创建的主题 » ElasticSearch:使用过滤器和常量“分数”优化查询?

关于1:

搬家 genre 与过滤器上下文匹配可能会加快一点速度(尽管这取决于许多其他因素),但您将失去排名,这对您来说可能重要,也可能不重要。最后,使用 must 当排名很重要或 filter 如果不是这样的话,你唯一的目标就是匹配一个文档或者不给出一些标准。

此外,使用类型关键字只会得到“精确匹配”的语义,这可能是您想要的…或者不,这取决于您创建查询的方式(用户输入或控制的选择列表)。

关于2:

must_not already in a filter context 所以它不会比你已经看到的更简单。筛选器上下文由两个部分组成 滤波器 + 绝对不能 .

最后一件事是,当有人问到性能优化时,我总是补充: Premature optimization is the root of all evil 所以,只有当你真正看到性能问题的时候,才这样做,这是前所未有的。

6 年前
回复了 Val 创建的主题 » 在ElasticSearch模板中创建geoip字段

您需要在索引模板中创建以下字段:

{
  "properties": {
     ...
     "geoip": {
       "type": "object",
       "properties": {
         "location": {
           "type": "geo_point"
         }
       }
     }
  }
}
6 年前
回复了 Val 创建的主题 » 不考虑模板和映射的ElasticSearch索引

你可能只需要 refresh your index pattern 在Kibana中,它从基础索引中获取最新的映射。

6 年前
回复了 Val 创建的主题 » ElasticSearch:如何根据属性中的项目数获取文档计数?

你可以这样做:

{
  "size": 0,
  "aggs": {
    "length": {
      "terms": {
        "script": {
          "source": "params._source.vendors.length",
          "lang": "painless"
        }
      }
    }
  }
}
6 年前
回复了 Val 创建的主题 » 如何将没有ID的批量插入发送到ElasticSearch

如果您想要自动创建ID,只需使用 index 而不是 create 以下内容:

change this
    |
    v
{"index": {"_index": "test", "_type": "_doc"} }
{"user": "kimchy", "post_date": "2002-11-15T14:12:12", "message": "trying out Elasticsearch"}
6 年前
回复了 Val 创建的主题 » ElasticSearch多字段搜索语法错误

如果你只是改变 should must 它不起作用,因为 category_id 不能同时具有两个值(除非它是数组,但不是数组)。

您需要使用以下查询:

$elasticQuery = [
"bool" => [
    'must' => [
            [
                    "multi_match" => [
                        "query"  => $text,
                        "type"   => "cross_fields",
                        "fields" => [
                            "name^4",
                            "description"
                        ]
                    ]
            ],
    ],
    'filter' => [
            [
                'terms' => [
                    'category_id' => [ 1, 3 ]
                ]
            ]
    ]
]
];
6 年前
回复了 Val 创建的主题 » ElasticSearch-6.4.2是否有摄取附件插件?

您只需运行以下命令,即可安装正确的版本:

bin/elasticsearch-plugin install ingest-attachment

否则,您也可以从这里下载: https://artifacts.elastic.co/downloads/elasticsearch-plugins/ingest-attachment/ingest-attachment-6.4.2.zip

然后像这样安装离线文件:

bin/elasticsearch-plugin install file:///path/to/ingest-attachment-6.4.2.zip
6 年前
回复了 Val 创建的主题 » Logstash是否支持ElasticSearch的“通过查询更新”?

这个 elasticsearch 输出插件只能调用 _bulk 端点,即使用 Bulk API .

如果要调用按查询更新API,则需要使用 http 输出插件并在事件内部自己构造查询。如果你解释你想要达到的目标,我可以用更多的细节更新我的答案。

注意:有一个 issue 请求此功能,但两年后仍将打开。

更新

所以如果你的输入事件是 {"cname":"wang", "cage":11} 您希望通过查询所有文档来更新 "cname":"wang" 设置 "cage":11 ,您的查询需要如下所示:

POST your-index/_update_by_query
{
  "script": {
    "source": "ctx._source.cage = params.cage",
    "lang": "painless",
    "params": {
      "cage": 11
    }
  },
  "query": {
    "term": {
      "cname": "wang"
    }
  }
}

所以您的logstash配置应该如下所示(您的输入可能会有所不同,但我使用了 stdin 出于测试目的):

input {
  stdin {
    codec => "json"
  }
}
filter {
  mutate {
    add_field => {
      "[script][lang]" => "painless"
      "[script][source]" => "ctx._source.cage = params.cage"
      "[script][params][cage]" => "%{cage}"
      "[query][term][cname]" => "%{cname}"
    }
    remove_field => ["host", "@version", "@timestamp", "cname", "cage"]
  }
}
output {
  http {
    url => "http://localhost:9200/index/doc/_update_by_query"
    http_method => "post"
    format => "json"
  }
}