匹配查询的结构是否影响服务器

时间:2019-05-24 09:17:03

标签: elasticsearch

我正在编写一些代码来生成查询,我想知道是否有任何一种生成查询的方法对服务器更友好。

所以这个查询:

{
  "from": 0,
  "size": 10,
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "Text": {
              "query": "Scooby Shaggy corridor",
              "fuzziness": 1,
              "operator": "AND"
            }
          }
        }
      ]
    }
  }
}

在逻辑上等效于此:

{
  "from": 0,
  "size": 10,
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "Text": {
              "query": "Scooby",
              "fuzziness": 1
            }
          }
        },
        {
          "match": {
            "Text": {
              "query": "Shaggy",
              "fuzziness": 1
            }
          }
        },
        {
          "match": {
            "Text": {
              "query": "corridor",
              "fuzziness": 1
            }
          }
        }
      ]
    }
  }
}

但是服务器更容易处理吗? 还是没有区别?

我意识到这是一个简单的例子,但是它可以对更复杂的查询有所作为吗?

如果某人对ElasticSearch在幕后的行为有所了解,那么我将不胜感激。

谢谢

亚当。

1 个答案:

答案 0 :(得分:1)

Elasticsearch会将自己的长期匹配查询重写为与逻辑等效的查询。有关更多详细信息,请参见here

  

匹配查询的类型为boolean。这意味着提供的文本是   分析,分析过程从   提供的文字。

但是您应该保留长期匹配查询,然后让Elasticsearch进行。它更易于维护,您可以借助rewrite参数来控制重写(请参见here