为了账号安全,请及时绑定邮箱和手机立即绑定

Elasticsearch,忽略 GET 响应中的内置映射细节

Elasticsearch,忽略 GET 响应中的内置映射细节

PHP
慕田峪7331174 2021-09-18 21:37:27
Elasticsearch:v7.0应用:Laravel v5.8使用 Elasticsearch/Elasticsearch ( https://github.com/elastic/elasticsearch-php ) PHP 库我们能够一次查询超过 900,000 个文档,我们正计划优化或加快查询速度。我们观察到内置映射详细信息总是与响应一起返回,(见下图)主要问题- 有没有办法忽略这些映射细节,因为我们认为如果不包含这些细节,响应会更轻松。附带问题- 或者至少,我可以谦虚地要求任何人教育我优化我的 Laravel-Elasticsearch 应用程序吗?
查看完整描述

1 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

您可以忽略映射详细信息,使用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",

    ...

不能简单地回答附带问题,因为您需要描述您想要做什么以及您打算使用什么样的查询。要跳过评分(如果您不需要它)并提高性能,您可以使用filter和constant_score查询例如。


查看完整回答
反对 回复 2021-09-18
  • 1 回答
  • 0 关注
  • 177 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号