在此链接的bool查询的elasticsearch doc中: https://www.elastic.co/guide/en/elasticsearch/reference/1.4/query-dsl-bool-query.html
它没有说含有结构。如果我按照他们拥有的方式使用bool,那就完全错了。我需要用查询/过滤/过滤查询的一些愚蠢组合来包围它。我不确定在弹性中形成json查询的正确方法是什么。这些文件似乎在很多地方完全矛盾,关于什么地方和方式。那些知道如何正确形成查询的弹性搜索专家?
答案 0 :(得分:1)
首先,有一个mDataObserver
查询和一个"bool"
过滤器,它们会在不同的地方进行,并会做一些不同的事情。作为一般规则,如果你可以使用过滤器(它们中的许多都可以被缓存,即使没有,也会更快)。如果您需要"bool"
,则需要查询。
您引用的页面上的示例实际上可以以任何一种方式使用:
作为查询:
"match"
或作为过滤器(在filtered query中):
POST /test_index/_search
{
"query": {
"bool": {
"must": {
"term": {
"user": "kimchy"
}
},
"must_not": {
"range": {
"age": {
"from": 10,
"to": 20
}
}
},
"should": [
{
"term": {
"tag": "wow"
}
},
{
"term": {
"tag": "elasticsearch"
}
}
],
"minimum_should_match": 1,
"boost": 1
}
}
}
此外,我完全对ES文档感到沮丧。我已经和他们一起工作了几年,他们似乎没有变得更好。也许负责文档的人员并不在乎这么多。阴谋理论认为,糟糕的文件可以帮助公司销售专业服务。