elasticsearch查询DSL中查询的含义

meaning of query in elasticsearch Query DSL

我正在尝试理解 elasticsearch 查询的语义。我知道每个查询都是一个包含对象 "query" 和 "filter" 以及可能还有其他一些选项的对象。现在在一些叶查询对象中可能有一个 "query" 对象而不是像文本或数字这样的原始数据,但是这似乎是一个与开始时的查询不同的对象。我试图理解文档,但找不到这两个对象的定义。

我遇到的困难是,我试图理解从叶子开始的查询,然后返回并以这种方式查看,叶子中的 "query" 对象正在返回一些单词或数据,这些单词或数据是在叶查询对象中使用 "match" 作为输入,但这不是 'main' 查询对象所做的,因为这是返回搜索结果。

这两个对象是完全不同的还是同一种对象,我完全没有抓住要点?

自下而上的工作可能会使理解 DSL 变得困难。 Elasticsearch 文档的布局方式实际上对学习 DSL 非常有帮助。如果您从 this page 开始并单击前进,我认为它很好地解释了 DSL。

至于您的具体问题,Elasticsearch DSL 对象结构确实将字段名称 "query" 用于不同目的。所有 Request-Body 查询(意思是那些不是 Query-String 查询的查询)都以 query context 开头。这是影响分数的查询子句的容器。这些子句是用于定义搜索的各种叶节点,例如 matchterm。查询还可以包含 filter context,其中包含进一步细化结果但不影响分数的子句。有些子句有一个名为 query 的 属性,例如 Match Query。在这种情况下,query 属性 用于定义要匹配的值。