laravel scout + elasticsearch-rtf 索引無效問題

Complicated 發表於 2021-08-09
Laravel ElasticSearch

大概3年前吧,用過一次這個組合做全文搜尋,一路順著教程寫下來也沒啥。最近需要做全文搜尋,卡主了,發現了一些問題,去網上找答案,發現大部分文件都是還是以前的老寫法,不適用了

問題:照著網上文件一步一步坐下來,老是提示_type不對,很是鬱悶,後來發現問題出在這裡
老文件說: searchableAs() 這方法返回是es的type,但是最新的tamayo/laravel-scout-elastic 這個方法 返回的應該是es的index(索引),就是你 config/scout.php配置裡的“ELASTICSEARCH_INDEX”對應的值。那type是變成什麼了呢?我去拔了下原始碼(vendor\Tamayo\LaravelScoutElastic\Engines\ElasticsearchEngine.php)裡邊的 update delete方法 裡是這麼寫的
“’_type’ => get_class($model),”
也就是說type是你的類名了,無需你額外指定了

到這裡也就清楚了
searchableAs()要返回es的index,eg:ykt
model名(帶著名稱空間)就是es的type,eg:App\Models\Article\ArticleInfo
getScoutKey()返回的是es的id,預設就是id

本作品採用《CC 協議》,轉載必須註明作者和本文連結