php - Elasticsearch,忽略GET响应中的内置映射详细信息

标签 php laravel elasticsearch

Elasticsearch:v7.0
应用程序:Laravel v5.8
使用Elasticsearch / Elasticsearch(https://github.com/elastic/elasticsearch-php)PHP库

我们一次可以查询超过900,000个文档,并且我们计划优化或加快查询速度。

我们已经观察到内置映射的详细信息总是与响应一起返回(请参见下图)

enter image description here

主要问题
-有没有办法忽略这些映射详细信息,因为我们认为,如果不包含这些详细信息,响应会更轻松。

侧面问题
-或者至少,我是否可以谦虚地请任何人来教育我优化我的Laravel-Elasticsearch应用程序?

最佳答案

您可以使用filter_path忽略映射详细信息,该信息可用于减少查询返回的响应。

例如如果您点击:

GET geo/_search
{
  "query": {
    "match_all": {}
  }
}

你会得到:
{
  "took" : 8,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 206,
      "relation" : "eq"
    },
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "geo",
        "_type" : "_doc",
        "_id" : "ALLE",
        "_score" : 1.0,
        "_source" : {
          "dateFrom" : null,
          "aListRemoved" : [ ],
          "phone" : "0036-1-424-2242",
...

但是,如果您使用filter_path:
GET geo/_search?filter_path=hits.hits._source
{
  "query": {
    "match_all": {}
  }
}

您将获得没有分片数量,点击关系,max_score等的结果:
{
  "hits" : {
    "hits" : [
      {
        "_source" : {
          "dateFrom" : null,
          "aListRemoved" : [ ],
          "phone" : "0036-1-424-2242",
    ...

仅仅因为您需要描述您想做的事情以及您打算使用哪种查询,就不能回答其他问题。要跳过计分(如果不需要)并提高性能,可以使用filterconstant_score查询。

here描述了有关调整ES集群以提高搜索速度的一些建议

关于php - Elasticsearch,忽略GET响应中的内置映射详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56850269/

相关文章:

php - 使用 mysql 存储函数和选择查询

php - Opencart - 从站点地图和搜索引擎中隐藏类别

laravel - 如何在 laravel 中的 app.js 文件中添加一个 Vue 组件?

elasticsearch - 从现在开始根据时间增加轮胎结果

php - 在准备好的语句的 where 子句中使用计数值

php - 什么可以用于 PHP 5.2 的 DateTime::diff()?

php - 限制在 WhereHas 内

reactjs - 来自 Laravel-mix(Reactjs 和 Laravel)中组件的未解析图像路径

apache-spark - throttle 从Apache Spark写入ES

elasticsearch - curl如何使用数据有效载荷执行获取请求?