我试图理解elasticsearch查询的语义。我知道每个查询都是一个包含对象“查询”和“过滤器”的对象,也许还有其他一些选项。现在在一些叶子查询对象中,可能有一个“查询”对象而不是文本或数字等原始数据,但是这似乎与开头的查询不同。我试图理解文档,但我找不到这两个对象的定义。
我所挣扎的是,我试图从叶子开始理解查询并回过头来看待它,叶子中的“查询”对象返回叶子中使用的一些单词或数据查询对象如“匹配”作为输入,但这不是“主”查询对象正在执行的操作,因为这会返回搜索结果。
这两个对象是完全不同的还是它们是同一类对象而我完全忽略了这一点?
答案 0 :(得分:1)
自下而上的工作可能会使DSL难以理解。 Elasticsearch文档的布局方式实际上对学习DSL很有帮助。如果你从this page开始,只需点击前进,我认为它可以很好地解释DSL。
至于您的具体问题,Elasticsearch DSL对象结构确实使用字段名称“query”用于不同目的。所有Request-Body查询(意思是那些不是查询字符串查询的查询)都以query context
开头。这是影响分数的查询子句的容器。子句是用于定义搜索的各种叶节点,例如match
和term
。查询还可以包含filter context
,其中包含可进一步细化结果的子句,但不会影响分数。某些子句具有名为query
的属性,例如Match Query。在这种情况下,query
属性用于定义匹配的值。