ElasticSearch搜索

ElasticSearch搜索

搜索方式——ES有两种搜索方式:第一种是通过URL参数进行搜索,另一种是通过POST请求参数进行搜索。
URL参数搜索
请求:GET http://127.0.0.1:9200/xy_order/order/_search?参数,多个参数用&分开,参数的解释如下:

参数 解释
q 查询字符串,例如:q=syslog
df 当查询中没有定义前缀的时候默认使用的字段
analyzer 当分析查询字符串的时候使用的分词器
lowercase_expended_terms 搜索的时候忽略大小写标志,默认为true
analyze_wildcard 通配符或者前缀查询是否被分析,默认为false
default_operator 默认多个条件的关系,AND或者OR,默认为OR
lenient 如果设置为true,字段类型转换失败的时候将被忽略,默认为false
explain 在每个返回结果中,将包含评分机制的解释
_source 是否包含元数据,同时支持_source_include和_source_exclude
fields 只返回索引中指定的列,过个列中间用逗号隔开
sort 根据字段 名排序,例如fieldName:asc或者fieldName:desc
track_scores 评分轨迹,当排序的时候,true表示返回评分的信息
timeout 超时的时间设置
terminate_after 在每个分片中查询的最大条数,如果设置,返回结果中会有一个terminated_early字段
from 返回的索引匹配结果的开始值,默认为0
size 搜索结果返回的条数,默认为10
search_type 搜索的类型,可以是dfs_query_then_fetch,query_then_fetch,默认为query_then_fetch

POST请求参数搜索

请求:POST http://127.0.0.1:9200/xy_order/order/_search,参数在请求中
参数是JSON格式的查询领域语法(query dsl),例如:

{
    "query":{"term":{"cbid":"9414722503469204"}}
}

如果需要搜索分页,可以通过from size组合来进行,from表示从第几行开始,size表示查询多少条记录。from默认为0,size默认为10,例如:

{
    "from":0,
    "size":10,
    "query":{
        "term":{"cbid":"9414722503469204"}
    }
}

搜索排序:
当搜索的字段有多个时,可以对指定字段进行排序,例如下面的搜索优先对type字段进行排序,然后对message字段进行排序:

{
    "sort":[
        {"amount":{"order":"asc"}},
        {"ConsumeTime":{"order":"desc"}}
    ]
}

当一个字段的内容有多个值的时候,系统支持一些计算进行排序,包括min、max、sum、avg、median(中间值),例如下面的请求表示order有多个值,取平均值排序的方式如下:

{
    "query":{
        ...
    }
    "sort":[
        {"amount":{"order":"desc", "mode":"avg"}}
    ]
}

数据列过滤
数据列过滤允许在查询的时候不显示原始数据,或者显示部分原始字段,例如不显示原始字段

{
    "_source":false,
    "query":{"term":{"cbid":"9414722503469204"}}
}

显示部分文档列的方式如下:

{
    "_source":"obj.*",
    "query":{"term":{"cbid":"9414722503469204"}}
}

还可以包含或者排除某些列

{
    "_source":{
        "include":["book1.*","book2.*"],
        "exclude":["*.description"]
    },
    "query":{"term":{"cbid":"9414722503469204"}}
}

脚本支持
对搜索是支持脚本的,例如,请求:POST http://127.0.0.1:9200/xy_order/order/_search?pretty
参数如下:

{
    "query":{
        "term":{"cbid":"9414722503469204"}
    },
    "script_fields":{
        "test1":{"script":"doc['cbid'].value *2"}
    }
}

你可能感兴趣的:(ElasticSearch搜索)