国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Laravel5.3+Scout+ElasticSearch5.0 小記

OnlyLing / 1023人閱讀

摘要:系統環境安裝沒什么要點只要跟著官方文檔流程一般都能安裝成功并成功運行不過在線上環境別人還是在用一是項目大了二是的不同版本對內存的要求不一樣而且在之后由于取消了導致很多插件都不能按照以前的方式安裝了比如很常用現在就要通過運行或者其他插件放

系統環境
Ubuntu16.04, ElasticSearch5.0, JDK1.8
ElasticSearch5.0

安裝es5.0沒什么要點,只要跟著官方文檔流程一般都能安裝成功,并成功運行.
不過在線上環境,別人還是在用es2.4,一是項目大了,二是jdk的不同版本對內存的要求不一樣.
而且在es5.0之后, 由于取消了site-plugin, 導致很多插件都不能按照以前的方式安裝了. 比如很常用elasticSearch-head, 現在就要通過Grunt運行. 或者其他插件放進Nginx或者Apachewww目錄運行.

安裝后可能出現的小問題:

$JAVA_HOME找不到, 但是的確有安裝, 可以設置/etc/default/elasticsearch 這個文件里面找到 JAVA_HOME=/usr/local/java/jdk1.8.0_101/jre;

要是環境內存太小就不要安裝, es5.0差不多占了我2.5G的內存, 當然現在一般人的電腦內存都挺多的;

安裝并配置Laravel/Scout

在.env文件底部添加這三行

SCOUT_DRIVER=customElasticSearch
ELASTICSEARCH_INDEX=box
ELASTICSEARCH_HOST=localhost:9200

這三行配置是Scout用于確定你使用什么Engine, 并且和搜索引擎的地址.

讀者可能會發現我的Driver是customElasticSearch, 而不是elasticsearch.
因為當你打開ElasticSearchEngine, 找到 performSearch Method,在里面你會發現有這么一段代碼

$query = [
            "index" =>  $this->index,
            "type"  =>  $builder->model->searchableAs(),
            "body" => [
                "query" => [
                    "filtered" => [
                        "filter" => $filters,
                        "query" => [
                            "bool" => [
                                "must" => $matches
                            ]
                        ],
                    ],
                ],
            ],
        ];

如果你直接運行 search Method, 就會告訴你 filtered已經取消了,詳見官網這個地址.
但是你又不能去直接改package的代碼, 還好Scout提供了自定義Engine.

所以我們新建一個customElasticSearchEngine, 繼承elasticSearchEngine, 重寫performSearch Method. 在其中,我修改了兩處地方,

這只是演示, 要真使用以后一定要改
$matches[] = [
            "match" => [
                "字段名" => $builder->query
            ]
        ];
$query = [
            "index" => $this->index,
            "type" => $builder->model->searchableAs(),
            "body" => [
                "query" => [
                    "bool" => [
                        "filter" => $filters,
                        "must" => $matches,
                    ],
                ],
            ],
        ];
使用Scout可能的小坑

如果你在數據庫的表有主鍵自增且名為id的字段, 但是你不希望 elasticSearch使用數據表的id來充當es的Document的id, 那么你需要更改model$primaryKey并且public $incrementing = false;, 這樣你就能指定當前數據表的其他值充當es的id. 如果es的數據有一部分_id是數據庫的id, 而另一部分又是你新指定的, 那么會導致你的搜索也好,其他操作也好都受影響.

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22018.html

相關文章

  • Laravel 全文檢索 Scout集成Algolia

    摘要:寫在前面你是否在檢索千百萬級數據時為性能和速度而擔憂呢,即使優化了,創建了數據庫索引,還是不盡如人意呢下面就主要介紹如何集成是法國初創公司為你提供毫秒級的數據庫實時搜索服務,天下武功無堅不摧,唯快不破。本文基于,其他版本大同小異。 寫在前面 你是否在檢索千百萬級數據時為性能和速度而擔憂呢,即使優化了sql,創建了數據庫索引,還是不盡如人意呢?下面就主要介紹laravel如何集成Algo...

    Jinkey 評論0 收藏0
  • Laravel中利用Scout集成Elasticsearch搜索引擎

    摘要:寫在前面以下簡稱是一個實時的分布式搜索和分析引擎。在搜索引擎方面,不僅僅有,像另一篇提到的,還有等等,這里不做評價和比較,本篇主要介紹中如何使用。首選必須安裝有,請參考。本文基于,其他版本大同小異。 寫在前面 Elasticsearch(以下簡稱es)是一個實時的分布式搜索和分析引擎。 在搜索引擎方面,不僅僅有Elasticsearch,像另一篇提到的Algolia,還有sphinx、...

    buildupchao 評論0 收藏0

發表評論

0條評論

OnlyLing

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<