ElasticSearchをインストールして、データを作成してみたので、今度は検索方法をチェックしてみます。MySQLと違って、APIにJsonを投げて「Query DSLというもの」、返り値をJsonで得るという手法です。Apache Solrと同じような感じですね。ブラウザでURLを叩いてCallしても不便なので、kibanaの「Dev Tool」から試してみます。
すべてのドキュメントを取得してみる (match_all)
MySQLに置き換えると、「select * from db_name.table_name」というやつです。MySQL Workbenchなどでは、デフォルトでlimit を決められていますが、ElasticSearchも同様でデフォルト数が決められています。デフォルト数は、10レコードです
///type_nameの中に入ってるドキュメントを探す場合
///MySQLでいうところの
///select * from db_name.table_name
GET /{index_name}/{type_name}/_search
{
"query": {
"match_all": {}
}
}
///index_name全体に入ってるドキュメントを探す場合
GET /{index_name}/_search
{
"query": {
"match_all": {}
}
}
indexの中すべてを横断検索できるのはいいですね。MySQLはできなかったような気がしますね。
10レコードと言われると、色々考えてしまうのがMySQLでいうところのoffsetのところ。
取得レコード数とスキップする件数を指定してを取得してみる (size,from)
MySQLでいうところのlimitは、ElasticSearchでは、fromとsizeで指定します。
///10件スキップした後、20件を取得する
///MySQLでいうところの
///select * from db_name.table_name limit 10,20
GET /{index_name}/{type_name}/_search
{
"query": {
"match_all": {}
},
"from":10,
"size":20
}
queryと同じ位置の並列で記載します。
となると、今度は並び順が気になってきます。MySQLでいうところの「order by」ですね。
特定のカラム(_source)の並び順を指定して、取得してみる (sort)
///_id で昇順ソートした後、10件スキップした後、20件を取得する
///MySQLでいうところの
///select * from db_name.table_name order by _id asc limit 10,20
GET /{index_name}/{type_name}/_search
{
"query": {
"match_all": {}
},
"from":10,
"size":20,
"sort":{"_id":"asc"}
}
///第二のsort条件をつける場合、sortの部分を配列にする。
///updatedを第一、_idを第二にしてみる。
///MySQLでいうところの
///select * from db_name.table_name order by updated asc, _id asc limit 10,20
GET /{index_name}/{type_name}/_search
{
"query": {
"match_all": {}
},
"from":10,
"size":20,
"sort":[{"updated":"asc","_id":"asc"}]
}
ちなみに、他のカラムで実行したところ、「Fielddata is disabled on text fields by default. Set fielddata=true on [{type_name}] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead.」というエラーが発生します。
私のElasticSearchのバージョンは6.8.4なのですが、このバージョンではmappingした際、Fiedldataが有効になっていないので、ソートできないようです。つまり、sortできるのはfielddataをtrueにして作成しないといけないようです。
Mysqlでいうところのindexかかってないところでsortするなよってことなのでしょうか。
今度は、取得する際に全カラムいらないんだけど。。。となってきますね。全部取得すると重いですし、カラムを指定して取得してみます。
特定のカラムを指定してを取得する(_source)
上記にも使ったupdatedと、titleというカラムを指定して取得してみます
///updatedで昇順し、さらに_id で昇順ソートした後、titleとupdatedを、10件スキップした後、20件を取得する
///MySQLでいうところの
///select title,updated from db_name.table_name order by updated asc,_id asc limit 10,20
GET /{index_name}/{type_name}/_search
{
"query": {
"match_all": {}
},
"from":10,
"size":20,
"sort":[{"updated":"asc","_id":"asc"}],
"_source":["title","updated"]
}
複数条件を組み合わせて検索する (where ~ AND,OR)
複数条件をつけての検索は、bool検索を使うらしい。で、mustはAND(マッチスコアを考慮)、filterもAND(スコア無視),shouldはOR,must_notは否定のNOTらしい。
以下サンプル
///以下はrangeで数値の範囲なども指定してみました。
//Mysqlでいうところの
//select * from db_name.table_name
//where animal_name="cat" and description like "%トラ模様%"
//and pageview>=100 and pageview<=2000 order by favorite_count desc
GET /{index_name}/{type_name}/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"animal_name": "cat"
}
},
{
"match":{
"description":"トラ模様"
}
},
{
"range":{
"pageview":{
"gte":100,
"lte": 200
}
}
}
]
}
},
"sort":{
"favorite_count":"desc"
}
}
mustとshouldを組み合わせて検索する (where ~ AND,OR)
さらにちょっと複雑なクエリを試してみます
///MySQLでいうところの
//select * from db_name.table_name
//where animal_name="cat" and (title like "%ペットホテル%" or description like "%ペットホテル%")
//order by pageview desc
GET /{index_name}/{type_name}/_search
{
"query": {
"bool": {
"must":[
{
"bool":
{
"must": {
"term": {
"animal_name": "cat"
}
}
}
},
{
"bool": {
"should":[{
"match_phrase":{
"title":"ペットホテル"
}},
{"match_phrase":{
"description":"ペットホテル"
}
}]
}
}]
}
},
"sort":{
"pageview":"desc"
}
}
同じカテゴリの記事
コメント
私たちはイタリアからの家族です:)
私たちは、ヨーロッパからロシアへの旅行の私たちの経験をご紹介したい、それはフィンランド(ヴァンター空港)に到着時に、サンクトペテルブルク、ロシ
友人は一つのロシア-フィンランドの会社、Transfer358Oyを提案し、あなたが知っている、すべてがうまくいった!
私たちは何の問題もなくそこに着きました、運転手は荷物を手伝って、途中で市場に持ってきて、ロシアとサンクトペテルブルクについて多くの興味深
私は彼らのウェブサイトがイタリア語を含むさまざまな言語であることを嬉しく思いました:
https://it.transfer358.com
https://de.transfer358.com
https://sp.transfer358.com
https://fi.transfer358.com
https://fr.transfer358.com
https://cn.transfer358.com
https://www.transfer358.com
広告のためではないので、この会社の会社5をお勧めします!
がんばろう)
時にはそれが別のデバイスやプログラムを設定する必要がある、私はウェブ上でこのトピックに価値があると有益な何かを探していました。
衛星アンテナ、普遍的なリモコンを設定し、ローカルネットワークを構築する必要がありました。
私は面白いプロジェクトを見つけました、そしてそれはすべての答えを持っています、詳細でそして写真で、それは本当にブックマークする価値があ
https://www.csyazzle.ru/vnedrenie-i-nastrojka-bitriks24-crm-dlja-vas/
https://www.csyazzle.ru/virtualbox-nastrojka-virtualnoj-mashiny/
https://www.csyazzle.ru/specifika-podkljuchenija-interneta-ot-mts-dlja/
https://www.csyazzle.ru/kak-nastroit-kanaly-na-televizore-vruchnuju/
https://www.csyazzle.ru/apple-pay-kak-nastroit-i-ispolzovat-platezhnuju/
https://www.csyazzle.ru/kak-nastroit-videoregistrator-poshagovaja/
https://www.csyazzle.ru/nastrojka-routera-netgear-poshagovoe-rukovodstvo/
あなたがより多くの同様のプロジェクトを提案することができれば、私は喜んでいるでしょう。
みんなに良い気分!
私の名前はヤナです、私はスウェーデンに住んでいます、それはスウェーデンの女性のためにあるべきであるように、美しいブロンドです)
私は子供を持っていた、それは学校の割り当てとレッスンのための時間だったし、本当の恐怖が始まった((
学校での睡眠、神経、チェック、評価の絶え間ない欠如。.
私は夫と一緒に寝るのをやめました、私は気分ではありません。 よく知られている友人は、あなたが答えを見つけてすぐにレッスンを解決してから、あなたの好きな活動に自分自身を与えることができる宿題を持つウェブサイトに助言しました!あなたが答えを見つけてレッスンを解決することができます。
ところで、良いウェブサイト
https://www.hometask.ru/istorija-5-klass-domashnee-zadanie-uchebnik/
https://www.hometask.ru/domashnee-zadanie-po-matematike-6-klass-dorofeeva/
https://www.hometask.ru/domashnee-zadanie-7-klass-merzljak/
https://www.hometask.ru/kak-sdelat-domashnee-zadanie-po-russkomu-jazyku-3/
https://www.hometask.ru/anglijskij-jazyk-4-klass-verbickaja-domashnee/
https://www.hometask.ru/domashnee-zadanie-po-matematike-gdz/
https://www.hometask.ru/blog/
広告、便利な検索、テスト論文に関する多くの貴重な情報はありません!
正直に言うと、私は平和的に眠り始めました、あなたが解決策を見つけて自由になることができるそのようなサイトのおかげで、家族のセックスと平和が回復しました!
頑張って!
時にはそれが別のデバイスやプログラムを設定する必要がある、私はウェブ上でこのトピックに価値があると有益な何かを探していました。
衛星アンテナ、普遍的なリモコンを設定し、ローカルネットワークを構築する必要がありました。
私は面白いプロジェクトを見つけました、そしてそれはすべての答えを持っています、詳細でそして写真で、それは本当にブックマークする価値があ
https://www.cssapemaster.ru/kak-nastroit-router-dir-300-poshagovaja/
https://www.cssapemaster.ru/test-i-nastrojka-routera-asus-rt-n12/
https://www.cssapemaster.ru/kak-nastroit-wifi-na-routere-d-link-dir-300/
https://www.cssapemaster.ru/nastrojka-routera-d-link-dir-300-podrobno-po/
https://www.cssapemaster.ru/kak-pravilno-nastroit-internet-na-kompjutere/
https://www.cssapemaster.ru/vazhnye-funkcii-fotoapparatov-nikon/
https://www.cssapemaster.ru/kak-nastroit-internet-na-noutbuke-cherez-kabel/
あなたがより多くの同様のプロジェクトを提案することができれば、私は喜んでいるでしょう。
みんなに良い気分!
時にはそれが別のデバイスやプログラムを設定する必要がある、私はウェブ上でこのトピックに価値があると有益な何かを探していました。
衛星アンテナ、普遍的なリモコンを設定し、ローカルネットワークを構築する必要がありました。
私は面白いプロジェクトを見つけました、そしてそれはすべての答えを持っています、詳細でそして写真で、それは本当にブックマークする価値があ
https://www.cssapemaster.ru/nastrojka-kanalov-na-televizore-kak-jeto-sdelat/
https://www.cssapemaster.ru/internet-televidenie-v-kazhdyj-dom/
https://www.cssapemaster.ru/kak-nastroit-wifi-na-routere-d-link-dir-300/
https://www.cssapemaster.ru/nastrojka-windows-10/
https://www.cssapemaster.ru/kak-nastroit-router-dir-300/
https://www.cssapemaster.ru/nastrojka-besplatnyh-kanalov-na-televizore-cherez/
https://www.cssapemaster.ru/asus-rt-n12-nastrojka-routera/
あなたがより多くの同様のプロジェクトを提案することができれば、私は喜んでいるでしょう。
みんなに良い気分!
https://1688bet.tw/
https://star168.tw/
https://xn--ghq10gmvi.com/
https://yachiyo.com.tw/hyadermissmile-injection/
どのくらいの頻度で夢を見ますか? あなたは何をしますか? あなたはただ忘れたり、彼らの意味とあなたの人生への影響を理解しようとします!
睡眠は人間の脳の右半球の重要な側面であり、潜在意識から情報を伝達し、重要な信号を与え、時には将来の出来事を予測することさえあります!
夢の解釈は非常に難しいように思われるかもしれませんが、正しくアプローチして夢の本に従ってすべてを研究すればそうではありません。
https://www.sonnikas.ru/k-chemu-snitsja-los-s-rogami/
https://www.sonnikas.ru/k-chemu-snitsja-detskij-sad/
https://www.sonnikas.ru/k-chemu-snitsja-spasat-tonushhego-cheloveka/
https://www.sonnikas.ru/k-chemu-snitsja-sdavat-jekzamen/
https://www.sonnikas.ru/k-chemu-snitsja-nakryvat-na-stol/
https://www.sonnikas.ru/k-chemu-snitsja-seraja-mysh/
https://www.sonnikas.ru/k-chemu-snitsja-shhenok-2/
あらゆる機会のための夢の本、余分なものは何もなく、夢を解読するだけで、柔軟な検索とあなたの人生と努力のための最大の利益!
私たちはあなたに幸運を祈り、メッセージが偶然にあなたに届いた場合は謝罪します!