文章目录

  • ​​查询​​
  • ​​查询结果结构​​
  • ​​hits​​
  • ​​es 查询​​

查询

from elasticsearch import Elasticsearch
es = Elasticsearch('ip:9200', timeout=100)
# 在请求超时timeout之前,Elasticsearch 将会返回已经成功从每个分片获取的结果。timeout 不是停止执行查询,它仅仅是告知正在协调的节点返回到目前为止收集的结果并且关闭连接

​es.search(index='')​​​ 或者​​es.search(index='',query={'query':{'match_all':{}}})​​​返回该索引下的所有数据,这里有个size参数,通常是10,也就是返回的查询个数为10,查询会在多个分片都查询size个结果,会影响集群性能,所以最大值通常为10000,如果想要获取量级比较大的数据,建议使用scoll接口,python可以查看scan
​​​scoll​​​​scan​​【Elasticsearch】常见问题汇总

查询结果结构

以下包含一次查询获得的结果结构
​​​空搜索​

{
"hits" : {
"total" : 14,
"hits" : [
{
"_index": "us",
"_type": "tweet",
"_id": "7",
"_score": 1,
"_source": {
"date": "2014-09-17",
"name": "John Smith",
"tweet": "The Query DSL is really powerful and flexible",
"user_id": 2
}
},
... 9 RESULTS REMOVED ...
],
"max_score" : 1
},
"took" : 4,
"_shards" : {
"failed" : 0,
"successful" : 10,
"total" : 10
},
"timed_out" : false
}

hits

返回结果中最重要的部分是​​hits​​ ,它包含 total 字段来表示匹配到的文档总数,并且一个 hits 数组包含所查询结果的前十个文档。

在 hits 数组中每个结果包含文档的​​_index​​​ 、 ​​_type​​​ 、 ​​_id​​​ ,加上​​_source​​ 字段。这意味着我们可以直接从返回的搜索结果中使用整个文档。这不像其他的搜索引擎,仅仅返回文档的ID,需要你单独去获取文档。

每个结果还有一个 ​​_score​​​ ,它衡量了文档与查询的匹配程度。默认情况下,首先返回最相关的文档结果,就是说,返回的文档是按照 ​​_score​​​ 降序排列的。在这个例子中,我们没有指定任何查询,故所有的文档具有相同的相关性,因此对所有的结果而言 1 是中性的​​_score​​ 。

​max_score​​​ 值是与查询所匹配文档的​​_score​​ 的最大值。

es 查询

​​python 使用 elasticsearch 常用方法(检索)​​