Пример поиска URI ElasticSearch

задняя часть Elasticsearch
Пример поиска URI ElasticSearch

Это 9-й день моего участия в августовском испытании обновлений, подробности о событии:Испытание августовского обновления

Если ❤️моя статья оказалась полезной, ставьте лайк и подписывайтесь. Это самый большой стимул для меня продолжать техническое творчество.Больше предыдущих статей в моей личной колонке

Пример поиска URI ElasticSearch

Я считаю, что все использовали DSL (Specific Query Language), используемый для запросов в Elasticsearch.Кроме того, Elasticsearch также может указывать условия запроса через uri.

Хотя эти функции не такие мощные, как у DSL, вы можете узнать о них больше.

Базовый запрос

История начинается с вопроса:

GET /movies/_search?q=2012&df=title&sort=year:desc&from=0&size=10&timeout=1s

Как видно из вышеизложенного, сюда входят следующие параметры:

  • q указывает оператор запроса, используя синтаксис строки запроса
  • поле по умолчанию df, если не указано, будут запрошены все поля
  • sort sort/from и size для нумерации страниц
  • profile, чтобы увидеть, как выполняется запрос

синтаксис поля запроса

  • { "profile":"true" } показать план выполнения запроса
  • Запрос указанного поля и общий запрос: q=title:2012 / q=2012
  • Term vs Phrase
    • Beautiful Mind эквивалентен запросу or
    • «Прекрасный разум» эквивалентно запросу и
    • Фраза требует, чтобы порядок оставался последовательным
  • группировка и цитаты
    • title:(Прекрасный разум) Группировка означает, что они должны появляться вместе
    • Фраза title="Beautiful Mind" означает, что она должна появляться вместе и по порядку.
  • Булева операция
    • И / ИЛИ / НЕ или && / || / !
      • должен быть написан с большой буквы
  • группировка
      • значит должен
      • означает must_not
    • title:(+matrix -reloaded) должен иметь матрицу и (поскольку это группировка) не может быть перезагружен
  • запрос диапазона
    • Интервальное представление: [] закрытый интервал, {} открытый интервал
      • year:>=1980
      • year:{2019 TO 2018}
      • year:[* TO 2019]
  • Арифметические символы
    • year:>2010
    • year:(>2010 && <=2018)
    • year:(+>2010 +<=2018>)
  • Подстановочные знаки (низкая эффективность запросов, большое использование памяти, не рекомендуется. Особенно вверху)
    • ? представляет один символ, * представляет 0 или более символов
  • регулярное выражение
    • title:[bt]oy
  • Нечеткое сопоставление и приближенный запрос
    • title:befutifl~1
    • title:"lord rings"~2

конкретная операция

# 基本查询
GET /movies/_search?q=2012&df=title&sort=year:desc&from=0&size=10&timeout=1s

# 带profile, 展示执行计划
GET /movies/_search?q=2012&df=title
{
	"profile":"true"
}

================== 返回结果 ==================
{
  "took" : 76,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 4.1047716,
    "hits" : [
      {
        "_index" : "tag",
        "_type" : "_doc",
        "_id" : "hFpZH3sBgpUFltoIW7vi",
        "_score" : 4.1047716,
        "_source" : {
          "memberId" : 618,
          "phone" : "15321761517",
          "sex" : "1",
          "channel" : 4,
          "subOpenId" : "gcik-4nwr9lsy7pv",
          "address" : 618,
          "regTime" : "2019-11-22",
          "orderCount" : 3,
          "orderTime" : "2019-11-22",
          "orderMoney" : 7546.0,
          "favGoods" : [
            2,
            11,
            16
          ],
          "couponTimes" : [
            "2019-11-25",
            "2019-11-27",
            "2019-11-13"
          ],
          "chargeMoney" : 25.0,
          "overTime" : 2100
        }
      }
    ]
  },
  "profile" : {
    "shards" : [
      {
        "id" : "[0tHjuZtUQMeFyRCWlNgK4w][tag][0]",
        "searches" : [
          {
            "query" : [
              {
                "type" : "TermQuery",
                "description" : "subOpenId:gcik",
                "time_in_nanos" : 237449,
                "breakdown" : {
                  "score" : 0,
                  "build_scorer_count" : 8,
                  "match_count" : 0,
                  "create_weight" : 231939,
                  "next_doc" : 0,
                  "match" : 0,
                  "create_weight_count" : 1,
                  "next_doc_count" : 0,
                  "score_count" : 0,
                  "build_scorer" : 5501,
                  "advance" : 0,
                  "advance_count" : 0
                }
              }
            ],
            "rewrite_time" : 3399,
            "collector" : [
              {
                "name" : "CancellableCollector",
                "reason" : "search_cancelled",
                "time_in_nanos" : 81522,
                "children" : [
                  {
                    "name" : "SimpleTopScoreDocCollector",
                    "reason" : "search_top_hits",
                    "time_in_nanos" : 64422
                  }
                ]
              }
            ]
          }
        ],
        "aggregations" : [ ]
      },
      {
        "id" : "[0tHjuZtUQMeFyRCWlNgK4w][tag][1]",
        "searches" : [
          {
            "query" : [
              ......
            ],
            "rewrite_time" : 3546,
            "collector" : [
              ......
            ]
          }
        ],
        "aggregations" : [ ]
      },
      {
        "id" : "[0tHjuZtUQMeFyRCWlNgK4w][tag][2]",
        "searches" : [
          {
            "query" : [
              ......
              }
            ],
            "rewrite_time" : 4308,
            "collector" : [
              ......
            ]
          }
        ],
        "aggregations" : [ ]
      },
      {
        "id" : "[0tHjuZtUQMeFyRCWlNgK4w][tag][3]",
        "searches" : [
          {
            "query" : [
              ......
            ],
            "rewrite_time" : 3412,
            "collector" : [
              ......
            ]
          }
        ],
        "aggregations" : [ ]
      },
      {
        "id" : "[0tHjuZtUQMeFyRCWlNgK4w][tag][4]",
        "searches" : [
          {
            "query" : [
              ......
            ],
            "rewrite_time" : 22285,
            "collector" : [
              ......
                ]
              }
            ]
          }
        ],
        "aggregations" : [ ]
      }
    ]
  }
}

Другие запросы URI

# 泛查询,正对_all,所有字段
GET /movies/_search?q=2012
{
	"profile":"true"
}

# 指定字段
GET /movies/_search?q=title:2012&sort=year:desc&from=0&size=10&timeout=1s
{
	"profile":"true"
}


# 查找美丽心灵, Mind为泛查询
GET /movies/_search?q=title:Beautiful Mind
{
	"profile":"true"
}

# 泛查询
GET /movies/_search?q=title:2012
{
	"profile":"true"
}

# 使用引号,Phrase查询
GET /movies/_search?q=title:"Beautiful Mind"
{
	"profile":"true"
}

# 分组,Bool查询
GET /movies/_search?q=title:(Beautiful Mind)
{
	"profile":"true"
}


# 布尔操作符
# 查找美丽心灵
GET /movies/_search?q=title:(Beautiful AND Mind)
{
	"profile":"true"
}

# 查找美丽心灵
GET /movies/_search?q=title:(Beautiful NOT Mind)
{
	"profile":"true"
}

# 查找美丽心灵
GET /movies/_search?q=title:(Beautiful %2BMind)
{
	"profile":"true"
}


# 范围查询 ,区间写法
GET /movies/_search?q=title:beautiful AND year:[2002 TO 2018%7D
{
	"profile":"true"
}


# 通配符查询
GET /movies/_search?q=title:b*
{
	"profile":"true"
}

# 模糊匹配&近似度匹配
GET /movies/_search?q=title:beautifl~1
{
	"profile":"true"
}

GET /movies/_search?q=title:"Lord Rings"~2
{
	"profile":"true"
}


Связанное Чтение