Elastic App Search で (Kibana) Dev Tools を使う
注意
Dev Tools でインデックスをDELETEしたらぶっ壊れたかも‥。Web Crawl をしてもインデックス作成されないし、エンジンを作り直してもクロールが「Pending」のままスタートしなくなった。β版のものを通常の管理画面にはない操作でいじるもんじゃないね‥。
はじめに
ElasticSearchが少しみないうちにアップデートしており、Elastic Cloud > Elastic Enterplize > Elastic App Search というのが出来ていた(この時点で迷子になりそう)。これは Web Crawler機能まで付いた検索エンジン作成サービスで、複数ドメインのクローリング→検索インデックス作成が可能。
Elastic App Search
今回試しにnoteをクローリングしてインデックス作成してみたが、検索結果にタグページやマガジンページばかりが上位に来て困った。
なのでこれを検索結果から除外したいが、Google Custom SearchやBing Costom SearchのようなBlockの指定はなくドキュメントを削除するしかないようだ。問題は一度クローリングしてインデックスに追加されてしまったドキュメントは1つずつしか削除できないこと。Document Delete API もあるが、これもidを1つずつ指定するしかない。
Dev Tools を使えないか
そこで Dev Tools を使えば、Regexも併用してurlフィールドに/hashtag
や/magazine
を含むドキュメントを一括削除できるのではと考えた。ちなみに以前はKibanaの中に備わっていたと記憶しているが、現在Cloud版だけかもですが、KibanaはAnalyticsと名前を変え、Dev Tools はメニューの下の方に独立して存在している👇
いっつも忘れるコマンド
まずコマンドの確認から
GET _search
{
"query": {
"match_all": {}
}
}
GET /_cat/indices?v
GET /.ent-search-engine-documents-[your-engine-name]/_mapping
GET /.ent-search-engine-documents-[your-engine-name]/_search
{
"query": {
"term": {
"title": "コスメ"
}
}
}
Web Crawlerが作成したインデックスはどれか
GET /_cat/indices?v
でインデックス一覧を確認すると物凄くたくさんのインデックスがある。ブラウザの設定でズームを25%くらいにして引いてみるとようやく綺麗に表示されるくらい。
「で、検索に使ってるインデックスどれよ?」となるが、.ent-search-engine-documents-[your-engine-name]
というのが1つだけあるはず。サイズも2.4gbとかそこそこデカイ。それが君が探してるインデックス。
DELETEするとCrawlerがインデックスしなくなる
DELETE /.ent-search-engine-documents-[your-engine-name]/
でインデックスを削除すると、App Search の管理画面でクローリングをスタートしても新しいインデックスは自動生成されず、ドキュメントが1つも作成されないままクローリングをし続けるので注意。
Dev Tools でログを見たり、新しくインデックスを作成し直すとかならいけるかもだけど、現状ElasticがApp Search 管理画面に Dev Tools を組み込んでないことをみるとやはりDELETEは非推奨なのかな。
Elastic App Search も画面が2つ
これも分かりにくいが、こっちがどうやら新しいベータ版のよう。ただしこのUIではWeb Crawlerは使えず旧版に飛ばされる。
そして一見モダンで新しそうだが、こっちが旧版のようだ。ただこっちは Dev Tools やAnalyticsなど他の製品が使えない。
もともとやりたかったドキュメントの一括削除
これは本題からずれるが、今からやるので、出来たら一応追記する。
参考文献
Discussion