1. 程式人生 > 其它 >elasticsearch 查詢資料

elasticsearch 查詢資料

一、隨機獲取資料

  • query 的同級下新增下面程式碼
"sort": {
    "_script": { 
      "script": "Math.random()",
      "type": "number"
    }
}

二、模糊查詢

1、prefix 字首查詢

  • prefix 字首查詢,查詢 id 以 “aa-” 開頭的資料,_source 段值為查詢後需要返回的欄位
GET 索引名/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "prefix": {
            "id": "aa-"
          }
        }
      ]
    }
  },
  "_source": ["title","id"]
}

2、wildcard 萬用字元查詢

  • wildcard 萬用字元查詢, 查詢 id 以 “aa-” 開頭的資料
GET 索引名/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "wildcard": {
            "id": "aa-*"
          }
        }
      ]
    }
  },
  "_source": ["title","id"]
}
萬用字元 含義 例項
* 匹配 0 或多個字元 a*b,a與b之間可以有任意長度的任意字元, 也可以一個也沒有, 如 aabcb, axyzb, a012b, ab
? 匹配任意單個字元 a?b,a與b之間有且只有一個字元, 可以是任意字元, 如 aab, abb, acb, a0b
[list] 匹配 list 中的任意單個字元 a[xyz]b,a與b之間必須也只能有一個字元, 但只能是 x 或 y 或 z, 如 axb, ayb, azb。
[!list] 匹配除 list 中的任意單一字元 a[!0-9]b,a與b之間必須也只能有一個字元, 但不能是阿拉伯數字, 如 axb, aab, a-b。
[c1-c2] 匹配 c1-c2 中的任意單一字元 a[0-9]b,匹配0與9之間其中一個字元,如 a0b, a1b… a9b
{s1,s2,…} 匹配 s1 或 s2 (或更多)中的一個字串 a{abc,xyz,123}b,a與b之間只能是abc或xyz或123這三個字串之一

3、regexp 正則查詢

GET 索引名/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "regexp": {
            "id": "aa-.*"
          }
        }
      ]
    }
  },
  "_source": ["title","id"]
}

三、多欄位查詢 best_fields、most_fields、cross_fields

參考連結:https://elastic.blog.csdn.net/article/details/111412721