Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 与查询匹配的过滤器_Performance_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Performance,elasticsearch" /> elasticsearch,Performance,elasticsearch" />

Performance 与查询匹配的过滤器

Performance 与查询匹配的过滤器,performance,elasticsearch,Performance,elasticsearch,我有两种类型的查询。它们在逻辑上都是相同的,但是我不确定两者之间是否有任何性能差异 如果有人能启发我,我会很高兴的 使用match_all和filter: { "query": { "filtered": { "query": { "term": { "user_id": "1234567" } }, "filter": { "bool": { "must":

我有两种类型的查询。它们在逻辑上都是相同的,但是我不确定两者之间是否有任何性能差异

如果有人能启发我,我会很高兴的

使用
match_all
filter

{
  "query": {
    "filtered": {
      "query": {
        "term": {
          "user_id": "1234567"
        }
      },
      "filter": {
        "bool": {
          "must": [
            {
              "range": {
                "ephoc_date": {
                  "lt": 1437033590,
                  "gte": 1437026390
                }
              }
            }
          ]
        }
      }
    }
  }
}

使用
术语
查询:

{
  "query": {
    "filtered": {
      "query": {
        "match_all": {}
      },
      "filter": {
        "bool": {
          "must": [
            {
              "term": {
                "user_id": "1234567"
              }
            },
            {
              "range": {
                "ephoc_date": {
                  "lt": 1437033590,
                  "gte": 1437026390
                }
              }
            }
          ]
        }
      }
    }
  }
}

查看您的查询,您似乎不关心基于
user\u id
字段值为“1234567”的文档如何评分。我的意思是-如果多个文档的
user\u id
设置为“1234567”,则不关心结果中文档的顺序。如果是这种情况,第二个选项在性能方面会更好,因为在第一个查询中有一些与评分相关的计算成本,而在第二个查询中没有评分。顺便说一下,您的第二个查询也可以简化为以下内容:

{
   "filter": {
      "bool": {
         "must": [
            {
               "term": {
                  "user_id": "1234567"
               }
            },
            {
               "range": {
                  "ephoc_date": {
                     "lt": 1437033590,
                     "gte": 1437026390
                  }
               }
            }
         ]
      }
   }
}

但是
match\u all
query在性能方面不是很昂贵吗?在对文档应用
过滤器之前,它不会加载整个文档吗?它不像您想象的那样工作。首先执行过滤器以获得匹配的文档集。
query
就是在这组文档上工作的。您建议的简化查询的性能是否与我的第二个查询一样,哪两个查询都比第一个查询好?是的,简化查询的性能与第二个查询完全相同。