Elasticsearch:v7.0
应用程序:Laravel v5.8
使用Elasticsearch / Elasticsearch(https://github.com/elastic/elasticsearch-php)PHP库
我们一次可以查询超过900,000个文档,并且我们计划进行优化或加快查询速度。
我们已经观察到内置映射的详细信息总是与响应一起返回(请参见下图)
主要问题
-有没有办法忽略这些映射详细信息,因为我们认为,如果不包含这些详细信息,响应会更轻松。
侧面问题
-或者至少,我可以谦虚地请任何人来教育我优化我的Laravel-Elasticsearch应用程序吗?
答案 0 :(得分:1)
您可以使用filter_path
忽略映射详细信息,可用于减少查询返回的响应。
例如如果您点击:
GET geo/_search
{
"query": {
"match_all": {}
}
}
您将获得:
{
"took" : 8,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 206,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "geo",
"_type" : "_doc",
"_id" : "ALLE",
"_score" : 1.0,
"_source" : {
"dateFrom" : null,
"aListRemoved" : [ ],
"phone" : "0036-1-424-2242",
...
但是如果您使用filter_path
:
GET geo/_search?filter_path=hits.hits._source
{
"query": {
"match_all": {}
}
}
您将获得没有分片数量,点击关系,max_score等的结果:
{
"hits" : {
"hits" : [
{
"_source" : {
"dateFrom" : null,
"aListRemoved" : [ ],
"phone" : "0036-1-424-2242",
...
仅因为您需要描述您想做的事情以及您打算使用哪种查询,所以不能回答其他问题。要跳过评分(如果不需要)并提高性能,可以使用filter
和constant_score
查询。
ES
集群以提高搜索速度的建议。