AnalyzeAPIの適用結果がまとめて参照できると、想定する検索APIで対象のデータが検索されるかどうかを効率的に判別できると思っています。
AnalyzeのBulkAPIがあればと思っているのですが、存在しないようです。(Analyze APIの仕様)
一つずつAnalyzeAPIで適用するのは非効率だと思っており、効率的な方法があれば知りたいです。
AnalyzeAPIの適用結果がまとめて参照できると、想定する検索APIで対象のデータが検索されるかどうかを効率的に判別できると思っています。
AnalyzeのBulkAPIがあればと思っているのですが、存在しないようです。(Analyze APIの仕様)
一つずつAnalyzeAPIで適用するのは非効率だと思っており、効率的な方法があれば知りたいです。
古いバージョンの頃に使っていた方法ですが、script_fieldで doc[{field名}].values;
とやるとドキュメントごとにそのfieldのterm一覧が取得できます。
一度bulk indexしてから出来上がったindexからこんな感じでデータを取り出すのはどうでしょうか。
(もしかすると書式変わってるかもしれないです)
GET YOUR_INDEX/_search
{
"size": 10,
"script_fields" : {
"script_terms" : {
"script" : "doc[\"YOUR_FIELD\"].values;"
}
}
}
ただ、これをやると当然indexを置くためのストレージや検索のための資源が必要になります。
Analyzeする際のメモリやCPUの負荷はどうせかかるものなので、実際のところはAnalyze APIをループで回す方が効率いいんじゃないかとも思います。
ご回答ありがとうございます。
こんな方法もあるのですね、AnalyzeAPIのループも鑑みつつ試してみたいと思います。
ちなみに、下記が使えそうな気がしてきました。
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-termvectors.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-multi-termvectors.html
This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
© 2020. All Rights Reserved - Elasticsearch
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant logo are trademarks of the Apache Software Foundation in the United States and/or other countries.