欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

常用Elasticsearch语句

时间:2023-07-13
目录

查询

布尔查询(bool query) 删除

条件删除 分析索引操作

查看索引映射信息查看索引配置信息查看写时分词结果 使用指定分词器结果业务操作

索引数据复制使用SQL语句查询索引别名使用

基础语法

查看别名新增别名【可批量】删除别名【可批量】 进阶语法

使用indeices数组语法在一个操作中为多个索引指向别名别名过滤器 查询 布尔查询(bool query)

Bool查询语法有以下特点

子查询可以任意顺序出现可以嵌套多个查询,包括bool查询如果bool查询中没有must条件,should中必须至少满足一条才会返回结果。

bool查询包含四种操作符,分别是must,should,must_not,filter。他们均是一种数组,数组里面是对应的判断条件。

must: 必须匹配。贡献算分
must_not:过滤子句,必须不能匹配,但不贡献算分
should: 选择性匹配,至少满足一条。贡献算分
filter: 过滤子句,必须匹配,但不贡献算分

删除 条件删除

DELETe index_name/_doc/_idPOST index_name/_delete_by_query{ "query": { "bool": { "must": [ { "term": { "FIELD": { "value": "VALUE" } } } ] } }}

分析索引操作 查看索引映射信息

GET index_name/_mapping

查看索引配置信息

GET index_name/_settings

查看写时分词结果

查看index_name索引在使用field_name字段存储一段文本时,es是如何分词的

POST index_name/_analyze{ "field": "field_name", "text": "Eating an apple a day keeps doctor away"}

根据分词器查看分词结果
分词器包括:
【standard】默认分词器(基于Unicode文本分割算法,适用于大多数语言)
【ik_max_word、ik_smart】ik分词器(前者是粗粒度的拆分,后者是细粒度的拆分)
【yinpin】拼音分词器
【whitespace】按空格分词器
【simple】按非字母分词器(结果中的英文均为小写)
等其他分词器

使用指定分词器结果

使用【standard】分词器时,es将如何分词

GET /_analyze{ "analyzer" : "standard", "text" : "Eating an apple a day keeps doctor away"}

参考内置分词器、中文分词器

业务操作 索引数据复制

POST /_reindex{ "source": { "index": "index_name" }, "dest": { "index": "new_index_name" }}

参考「Elasticsearch」ES重建索引怎么才能做到数据无缝迁移呢?

使用SQL语句查询

POST /_xpack/sql/translate?pretty { "query": "SELECT context FROM index_name where context like '%目录%'" }# v.7.0后POST /_sql?format=txt { "query": "SELECt context FROM index_name where context like '%目录%'" }

参考Elasticsearch SQL特性研究

索引别名使用 基础语法 查看别名

# 查询所有别名是alias_name的索引GET /_alias/alias_name# 查询索引index_name指向以alias_name开头的所有别名GET index_name/_alias/alias_name*# 查询索引index_name所有的别名GET index_name/_alias/*

新增别名【可批量】

POST _aliases{ "actions": [ {"add": {"index": "index_name", "alias": "alias_name", "is_write_index":true}} # 批量操作可直接`,`拼接 ]}

当同一个别名指向多个索引的情况下,如果你想要修改别名的时候也想修改索引,那么在设置索引的时候,请在配置别名的时候,同时加上这个参数(is_write_index = true)。默认是 false,只可以为一个索引进行修改,否则报错。

删除别名【可批量】

POST _aliases{ "actions": [ {"remove": {"index": "index_name", "alias": "alias_name"}} # 批量操作可直接`,`拼接 ]}

删除和新增可混合使用

进阶语法 使用indeices数组语法在一个操作中为多个索引指向别名

多个索引指向同一别名

POST _aliases{ "actions": [ {"add": {"indices": ["index_name1", "index_name2", "index_name3"], "alias": "alias_name"}} ]}

一个索引指向多个别名

POST _aliases{ "actions": [ {"add": {"index": "index_name", "aliases": ["alias_name1", "alias_name2", "alias_name3"]}} ]}

别名过滤器

POST _aliases{ "actions": [ { "add": { "index": "index_name", "alias": "alias_name", "filter": {"term": {"FIELD": "VALUE"}} } } ]}

如果想用一个别名对索引中的某个字段进行分组,可以选择别名过滤器

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。