最近在读Elasticsearch的书,准备把英文版翻译出来,此处先把看书中用到的一些常用查询列出来,以备以后查询。

搜索方法:

  • /_search 查询所有索引和类型
  • /gb/_search 查询gb索引的全部类型
  • /gb,us/_search 查询gb和us索引的全部类型
  • /g,u/_search 查询以g或者u开头的索引的全部类型
  • /gb/user/_search 查询gb索引的user类型
  • /gb,us/user,tweet/_search 查询gb和us索引的user和tweet类型
  • /all/user,tweet/search 查询全部索引中的user和tweet类型
  • 测试分词

  • GET /_analyze?analyzer=standard
  • 查看gb索引中tweet类型的mapping:

  • GET /gb/_mapping/tweet
  • 查询和过滤

  • 查询是按照搜索条件和匹配度获取结果,而过滤更关注某个字段是否匹配相应的过滤条件
  • 性能方面,过滤能更快的计算结果,而且过滤返回的结果可以缓存以便在子查询中用,而查询由于是按照相关度匹配,结果是不能缓存的
  • 使用条件:通常来说,如果是进行全文检索或者某个条件会影响匹配度的话,就用查询语句,其他情况下都可以用过滤语句
  • 重要的查询和过滤

  • term过滤:用精确条件过滤字段,可以是数字、日期、布尔型和未经处理的字符串
  • { "term": { "age": 26 }}
    { "term": { "date": "2014-09-01" }}
    { "term": { "public": true }}
    { "term": { "tag": "full_text" }}
    
  • terms过滤:可以同时指定多个过滤用的匹配字段 { "terms": { "tag": [ "search", "full_text", "nosql" ] }}

  • ranger过滤:按照ranger指定的范围进行过滤

  • {
        "range": {
            "age": {
                "gte": 20,
                "lt": 30
            }
        }
    }
    可以接受的判断条件:
    gt:greater than  
    gte:greater than or equal to  
    lt:less than  
    lte:  
    > less than or equal to
    

    未完待续。。。