Laravel Scout与Elasticsearch-反应缓慢

时间:2018-08-23 07:48:10

标签: php laravel elasticsearch laravel-scout

这是我的情况:

我正在开发基于Laravel 5.5的应用程序,该应用程序使用ScoutElasticSearch Driver进行研究。 Laravel应用正在使用内置服务器(php artisan服务)运行。

我的elasticsearch集群正在使用dockerLaradock environment上运行。 我有一个包含这样的项目的索引:

{
                "_index": "artworks",
                "_type": "artworks",
                "_id": "575",
                "_score": 9.206466,
                "_source": {
                    "fields": [
                        {
                            "name": "artwork_name",
                            "value": "Earl Mills",
                            "language": "it"
                        },
                        {
                            "name": "artwork_category",
                            "value": "Torp-Towne"
                        },
                        {
                            "name": "technique",
                            "value": "neque",
                            "language": "it"
                        },
                        {
                            "name": "subdivision",
                            "value": "facere",
                            "language": "it"
                        },
                        {
                            "name": "stamp",
                            "value": "Manuela Gulgowski"
                        },
                        {
                            "name": "cataloguer",
                            "value": "Cristal Lesch"
                        },
                        {
                            "name": "alt_dimensioni",
                            "value": "Sunt molestiae eligendi et sed doloremque dolor. Debitis provident saepe deleniti. Aperiam et sint quo vel repudiandae tempora dicta qui."
                        },
                        {
                            "name": "larg_dimensioni",
                            "value": "Et odit qui libero. Eaque molestiae itaque et sed enim et. Nihil quod ea odio distinctio. Voluptate tempore sit ad rerum."
                        },
                        {
                            "name": "prof_dimensioni",
                            "value": "Sed pariatur nihil quia quia dolorum illo. Quaerat est sed dolore et. Ab est possimus hic cum repudiandae vero qui. Quo sunt molestiae fugit perspiciatis dolores fugit."
                        },
                        {
                            "name": "Cartella_Serie",
                            "value": "Blanditiis incidunt quam dolor sunt. Labore voluptatem vero explicabo at molestiae eaque. Est ut incidunt voluptatibus ea impedit quos. Aspernatur dolorem unde vel ea."
                        },
                        {
                            "name": "Tiratura_Esemplare",
                            "value": "Omnis quis non sed et non est. Nobis et sit explicabo praesentium. Ut eveniet tempora ratione quae. Odit qui eum facilis odit nihil officiis."
                        },
                        {
                            "name": "Tiratura_Complessiva",
                            "value": "Fugit occaecati molestiae pariatur repellat mollitia. Eveniet iste quisquam et facilis. Iste accusantium magni quod magni architecto tempore quae. Beatae delectus sequi quibusdam et."
                        },
                        {
                            "name": "Firmato",
                            "value": "Provident quidem quam ut et quis. Consequuntur unde nesciunt eligendi asperiores. Nulla et voluptate ut dignissimos autem asperiores incidunt."
                        },
                        {
                            "name": "Titolo_per_ordinamento",
                            "value": "Eligendi consequatur odio reprehenderit quibusdam voluptatem. Veniam commodi necessitatibus dolorum dolorem voluptatum eveniet nobis. Optio dolores aspernatur odio non."
                        },
                        {
                            "name": "Note_Storico_Artistiche",
                            "value": "Sit a animi expedita dolore quos qui ea. Consectetur dignissimos aut natus nam animi. Aut vitae alias molestias. Cupiditate molestiae dolores dolorem sint dolores.",
                            "language": "en"
                        },
                        {
                            "name": "Note_Storico_Artistiche",
                            "value": "Eos optio aut explicabo delectus. Est nihil non id autem. Pariatur ea in eum odio.",
                            "language": "it"
                        }
                    ]
                }

该索引包含大约1000个项目,与之前的项目相同。 我正在使用类似这样的查询来测试性能:

{
   "query":{
      "bool":{
         "must":[
            [
               {
                  "match":{
                     "fields.value":"Manuela Gulgowski"
                  }
               }
            ]
         ]
      }
   }
}

使用POST方法直接调用elasticsearch实例的性能结果: http://localhost:9200/artworks/_search?pretty=true->〜50ms

调用我的应用程序的性能结果: http://localhost:8000/api/v1/artworks/search?query=Manuela Gulgowski->约3500毫秒

这两种方法都返回一页10个元素。

我的方法很简单:

public function search(Request $request)
    {
        $query = $request->get("query");
        $artworks = Artwork::search($query)->paginate(10);
        return $this->sendResponse(new ArtworkCollectionResource($artworks));
    }

有人知道我是否缺少某些东西,或者可以通过哪种方式提高性能? 我完全理解使用我的应用程序api不能获得50ms的响应,但是我希望它至少在600-700ms左右可以响应。

更新 经过大量测试,我发现我的应用有时在约900毫秒内响应,而其他时候在约3500毫秒内响应,而这种延迟差异是由Scout驱动程序中的分页引起的。

$results = Collection::make($engine->map(
            $rawResults = $engine->paginate($this, $perPage, $page), $this->model
        ));

我要进一步调查。

0 个答案:

没有答案