Elasticsearch的查询

查询方式:

  1. URL Search

  2. Request Body Search

 

在执行搜索时,搜索请求将广播到所有的索引分片(分片副本之间循环查找)

如果提供routing参数,可控制搜索哪些分片。

 

POST /twitter/_doc?routing=kimchy
{
  "user":"kimchy",
  "postDate":"2019-11-05",
  "message":"trying out Elasticsearch"
}

GET /twitter/_search?routing=kimchy
{
  "query": {
    "term": {
      "user": {
        "value": "kimchy"
      }
    }
  }
}

{
  "took": 1,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": 0.2876821,
    "hits": [
      {
        "_index": "twitter",
        "_type": "_doc",
        "_id": "qLSaOm4BDE4t6YNu7VC4",
        "_score": 0.2876821,
        "_routing": "kimchy",
        "_source": {
          "user": "kimchy",
          "postDate": "2019-11-05",
          "message": "trying out Elasticsearch"
        }
      }
    ]
  }
}

GET /twitter/_search
{
  "query": {
    "term": {
      "user": {
        "value": "kimchy"
      }
    }
  }
}

 "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  }

 

 

1. URL Search

URI不支持所有的搜索选项, 但可用于方便快速的测试。

参数说明:
q查询字符串,query_string查询。
df:在查询中未定义字段前缀时默认使用的字段。
analyzer: 分析查询字符串时使用的分析器名称。
default_operator: 默认的操作符, 可以是ANDOR, 默认是OR
batched_reduce_size:在协调节点(Coordinating Node)上每次reduce的分片结果数。如果请求中的分片的数量很大, 则应设置此值作为保护机制, 以减少每个搜索请求的内存开销。
lenient: 如果设置为true, 格式错误(例如数值类型的字段, 提供了text格式)的失败将被忽略, 默认为false
analyze_wildcard:是否分析通配符和前缀查询, 默认为false
terminate_after: 每个文档收集的最大数量, 当达到这个数量时, 查询执行将提前终止。当设置了此参数, 响应的body将具有布尔字段terminated_early用于标识查询执行是否实际终止了。 默认没有设置此参数。
explain:对每个命中的记录, 包含一个explaination, 关于命中的得分是如何计算的。
_source: 设置为false, 禁用_source字段的检索。 也可以使用_source_include &_source_exclude 检索部分文档。
stored_fields: 控制哪些stored字段作为解释的文档的一部分返回。
routing: 控制路由。
parent: 同routing
preference: 控制查询在哪个分片上执行。
source: 允许将请求的数据放入url的查询字符串中。
sort: 排序, 既可以是fileName的形式, 也可以是
fieldName:asc/fieldName:descfieldName:asc既可以是文档中的实际字段名, 也可以是特殊的_score字段(用于表示基于得分的排序)。可指定多个排序参数。
track_scores:当设置为true, 排序时track得分, 并作为hit的一部分返回。
track_total_hits:当设置为false, 禁用track匹配查询的命中的总记录数。
timeout: 搜索超时, 将搜索限制在指定的时间内执行, 当超期时返回这个点累计的命中数。timeout默认使用Search Cancellation 机制在超时后取消搜索请求。默认无超时。
from: 从某个偏移量检索命中的文档, 默认为0.
size: 要返回的记录数, 默认为10。 如果不关心命中的记录, 但只关心匹配的数量或者聚合,将此值设置为0将有助于提高性能。
search_type: 执行搜索操作的类型。 可以是dfs_query_then_fetchquery_then_fetch,默认为query_then_fetch
allow_partial_search_results:默认为true, 在超时或部分失败的情况返回部分结果。 如果设置为false, 当请求产生部分结果, 将整体返回失败

 

2. Request Body Search

Request Boby Search使用search DSL(包括查询DSL)在body里面执行搜索 .。

 

posted on 2019-11-06 09:42  浅蓝色星光  阅读(851)  评论(0编辑  收藏  举报