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"
  }
}
    

コメント

HOYA娛樂城

https://xn--hoya-8h5gx1jhq2b.tw/
https://94forfun.com


英雄聯盟世界大賽、線上電競投注
HOYA娛樂城



https://as-sports.net
冠天下現金版




https://xn--ghq10gmvi961at1b479e.com/
こんにちは!

私の面白い音楽体験についてお話ししたいと思います!
私は偶然に一つのプロジェクトを見つけました,そして、私はちょうどすぐにこの曲を愛しました)


Introducing Fast Distro Music 、トップの電子音楽アーティストを紹介する無料音楽配信サービス。
あなたが見逃してはならない注目すべきアーティストの1つは次のとおりです。 ASPARAGUSproject -業界で有名な名前。
電子ビートの作曲における彼らの例外的な才能のために知られています, ASPARAGUSproject 永続的な影響を与えました。
彼らの最新リリース, "All The Things You Do" このジャンルにおける彼らの多様性と専門知識を真に強調している注目に値するダンストラックです。
その脈動ビート、中毒性のシンセ、そしてキャッチーなメロディーで、この曲は即座に古典的になります。 あなたがプレイをヒットした瞬間から、それは爽快にあなたを取ります
純粋な陶酔感に満ちた音楽の旅。 をお見逃しなく!!!!!!!!! ASPARAGUSproject's 魅惑的なリズム、魅惑的なメロディー、そして感染性のエネルギー。
の成長を続けるコミュニティに参加 ASPARAGUSproject ファン https://spoti.fi/3ZigZRs そして、今日の電子音楽で最高を体験!
これらのトラックもここで聞くことができます:
https://spoti.fi/3ZigZRs
https://www.youtube.com/channel/UCrD_jWMcdi1gyNlqI1jByPA

はい、それは超面白いプロジェクトと音楽です!
<a href=https://spoti.fi/468D6fj>top hits</a>
<a href=https://apple.co/46auAfF>popular songs</a>
<a href=https://spoti.fi/3ZigZRs>top hits</a>

幸運を!
Not must Youtube 買like buyers be confined to their own personal voices even though conversing with family members, speaking about enterprise issues or conducting extensive-distance interviews.

<a href=https://snshelper.com/hk>Facebook 廣告</a>
水微晶玻尿酸 - 八千代


https://yachiyo.com.tw/hyadermissmile-injection/
冠天下現金版




https://xn--ghq10gmvi961at1b479e.com/
HOYA娛樂城

https://xn--hoya-8h5gx1jhq2b.tw/
おはようございます!
私はあなたに私のカードの購入と販売のプラットフォームを紹介したいと思います。
現在、私たちは様々な国の多くのカードを持っています。
有効なカードは10%から95%までです。価格は0.5ドルから25ドルまでです。
私たちのショップを使うのが楽しいと思います!

https://cvv-news.store
http://mdxi5muztwunq4w2f4idbl7uzukcvoabjfvic75tf33lub6eflm5joqd.onion/

Dumps And Cvv, The Best Cvv Shop, Dumps Cvv Shop, Super Cc Dumps, ccshop, Wss Cvv Shop, Best Cc Dumps, Cvv Cc, Ccv For Sale, New Dumps Shop, Fresh Cvv, Dumps Cvv Checker, Dumps Online, taplink cc shopping, Card Dump Sites, Buy Dumps With Pin Online
1    2    3    4    5    6    7    8