Elasticsearch:v7.0
应用程序:Laravel v5.8
使用Elasticsearch / Elasticsearch(https://github.com/elastic/elasticsearch-php)PHP库
我们一次可以查询超过900,000个文档,并且我们计划优化或加快查询速度。
我们已经观察到内置映射的详细信息总是与响应一起返回(请参见下图)
主要问题
-有没有办法忽略这些映射详细信息,因为我们认为,如果不包含这些详细信息,响应会更轻松。
侧面问题
-或者至少,我是否可以谦虚地请任何人来教育我优化我的Laravel-Elasticsearch应用程序?
最佳答案
您可以使用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
查询。here描述了有关调整
ES
集群以提高搜索速度的一些建议
关于php - Elasticsearch,忽略GET响应中的内置映射详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56850269/