关于为bool查询包含json的elasticsearch文档的混淆

时间:2015-11-04 20:47:52

标签: elasticsearch elasticsearch-plugin

在此链接的bool查询的elasticsearch doc中: https://www.elastic.co/guide/en/elasticsearch/reference/1.4/query-dsl-bool-query.html

它没有说含有结构。如果我按照他们拥有的方式使用bool,那就完全错了。我需要用查询/过滤/过滤查询的一些愚蠢组合来包围它。我不确定在弹性中形成json查询的正确方法是什么。这些文件似乎在很多地方完全矛盾,关于什么地方和方式。那些知道如何正确形成查询的弹性搜索专家?

1 个答案:

答案 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文档感到沮丧。我已经和他们一起工作了几年,他们似乎没有变得更好。也许负责文档的人员并不在乎这么多。阴谋理论认为,糟糕的文件可以帮助公司销售专业服务。