ElasticSearch基本查询,为什么不起作用

时间:2015-05-15 21:39:47

标签: elasticsearch

我正在尝试学习如何查询ElasticSearch。我的背景是数据库开发,我一直在思考sql的做法。我确实阅读了有关不同类型查询的ES文档,但其中许多仍然对我没有意义。我有几个问题,真的希望有人可以帮助我解决问题。

  1. _search和_search?search_type = count?
  2. 之间有区别吗?
  3. 有没有办法可以查询映射,所以我可以看到字段名称和类型?
  4. 我需要从app =“AAA”的所有文档中恢复app,cat和sub字段。
  5. 为什么这样的事情不起作用?

    {
      "fields":["app","cat","sub"],
      "query":{
            "field" : {
                "app.raw": "AAA"
            }
        },
      "from": 0,
      "size": 10
    }
    

    由于

1 个答案:

答案 0 :(得分:0)

  
      
  1. _search和_search?search_type = count?
  2. 之间有区别吗?   

是的,后者将返回实际点击数。如果您只需要知道它将匹配多少文档,或者您只需要过滤器/聚合的结果,那么后者适合您。

  
      
  1. 有没有办法可以查询映射,所以我可以看到字段名称和类型?
  2.   

使用get mapping端点:http://localhost:9200/index/type/_mapping?pretty

语法有各种变化,我使用CBPeripheral但您也可以将其称为type/_mapping

  
      
  1. 我需要从app =" AAA"。
  2. 的所有文件中带回app,cat和sub字段。   

在不知道您的映射的情况下,很难猜测真正出错的地方。

由于您正在使用_mapping/type,我认为您可能会使用Core Types,这是一个app.raw字段,因此您可能应该使用最适合它的查询这将是Term Query

not_analyzed

如果上述方法无法解决,请提供{ "query":{ "term" : { "app.raw": "AAA" } } } 的输出。

掌握查询DSL对于使任何有用的东西很重要。我建议阅读Query DSL reference,浏览"Search in Deptht"-Guide,我也可以推荐最新的视频Query DSL not just for Wizards,让一些奇怪的部分神秘化。