成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Laravel5.3+Scout+ElasticSearch5.0 小記

OnlyLing / 1032人閱讀

摘要:系統(tǒng)環(huán)境安裝沒(méi)什么要點(diǎn)只要跟著官方文檔流程一般都能安裝成功并成功運(yùn)行不過(guò)在線上環(huán)境別人還是在用一是項(xiàng)目大了二是的不同版本對(duì)內(nèi)存的要求不一樣而且在之后由于取消了導(dǎo)致很多插件都不能按照以前的方式安裝了比如很常用現(xiàn)在就要通過(guò)運(yùn)行或者其他插件放

系統(tǒng)環(huán)境
Ubuntu16.04, ElasticSearch5.0, JDK1.8
ElasticSearch5.0

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

安裝后可能出現(xiàn)的小問(wèn)題:

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

要是環(huán)境內(nèi)存太小就不要安裝, es5.0差不多占了我2.5G的內(nèi)存, 當(dāng)然現(xiàn)在一般人的電腦內(nèi)存都挺多的;

安裝并配置Laravel/Scout

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

SCOUT_DRIVER=customElasticSearch
ELASTICSEARCH_INDEX=box
ELASTICSEARCH_HOST=localhost:9200

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

讀者可能會(huì)發(fā)現(xiàn)我的Driver是customElasticSearch, 而不是elasticsearch.
因?yàn)楫?dāng)你打開(kāi)ElasticSearchEngine, 找到 performSearch Method,在里面你會(huì)發(fā)現(xiàn)有這么一段代碼

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

如果你直接運(yùn)行 search Method, 就會(huì)告訴你 filtered已經(jīng)取消了,詳見(jiàn)官網(wǎng)這個(gè)地址.
但是你又不能去直接改package的代碼, 還好Scout提供了自定義Engine.

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

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

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

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/22018.html

相關(guān)文章

  • Laravel 全文檢索 Scout集成Algolia

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

    Jinkey 評(píng)論0 收藏0
  • Laravel中利用Scout集成Elasticsearch搜索引擎

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

    buildupchao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<