在哪里可以找到elasticsearch DSL的正式定义?

zed5wv10  于 7个月前  发布在  ElasticSearch
关注(0)|答案(2)|浏览(51)

elasticseach的文档是非常非正式的。例如,Filtered Query没有指定是否需要“查询”或“过滤器”部分。“查询”下有一个注解说query definition,但没有进一步解释这是什么意思。为了解释文档,需要进行大量的猜测来弄清楚什么是法律的。
在哪里可以找到elasticseach DSL的正式定义?

zxlwwiss

zxlwwiss1#

第一个query_search端点的一个选项,您可以在其中指定您的查询,无论它可能多么复杂。
第二个querymatch查询的一个参数,它包含要搜索的词。同意,它可以被称为valueinputwhatever。它没有任何递归,我承认它可能会让新来者感到困惑,但这就像能够在函数内外声明一个int变量一样。语言
无论如何,我已经使用DSL超过13年了,但我同意DSL的规范早就应该制定了。但是,如果我们重用您给出的示例查询,并决定使用OR运算符而不是AND运算符,我们可以将其写成如下的简短形式,因为我们使用了match查询的所有默认参数:

GET books/_search
{
  "query": {
    "match": {
      "author": "Joshua Schildt"
    }
  }
}

字符串
正如您所看到的,不再有queryauthor参数被直接指定为搜索项,而不是JSON散列和查询参数。这种灵活性使得很难提出一个清晰的DSL规范,因为根据您希望如何配置查询,有许多不同的方法来编写查询。
实际上,在客户端和Elasticsearch服务器之间可以交换的所有操作和数据类型都有一个TypeScript“规范”,您可以在elastic/elasticsearch-specification Github repo中找到它,而且对于match查询也是如此,其中描述了所有可能的参数。
在第282行中,我们甚至可以看到MatchQuery被注解为@shortcut_property query,这意味着整个JSON结构可以只替换为query参数的值,正如我们前面所看到的。
同样值得注意的是,您可以为Elasticsearch REST API支持的所有操作找到一个OpenAI specification
同样值得注意的是,在即将发布的8.11版本中,一种名为ES|QL的新管道语言将被发布,the documentation of the language应该更符合你的喜好,因为它是一种更“正式”的语言,并附带了应用程序内的文档。
100d1x

的字符串

ycggw6v2

ycggw6v22#

我发现Elasticsearch Query DSL documentation相当全面。
我想在你强调的例子中,这有点棘手。过滤查询是一个链到另一个查询的结果。
过滤查询的query definitionfilter definitionMap到查询DSL的queriesfilters部分(可能不明显)。您可以使用过滤查询负载中的任何查询(匹配等)和任何过滤器(存在等)。

相关问题