小工具知识网

当前位置: 首页 > 行业知识 > kibana操作es使用DSL查询

行业知识

kibana操作es使用DSL查询

2026-11-16 01:42:14 来源:互联网转载

前言

记录下kibana操作es,使用DSL进行创建索引,简单查询,版本7.7.1

()

目录

  • 前言
  • 创建
  • 删除
  • 添加
  • 更新
  • 查询

    创建

    settings 中配置索引分片为,这个结合自己的节点数量

    在mappings里面配置字段,如果有字段不需要被索引,可以设置index为false,默认是true

    ()

    在 Elasticsearch 的索引映射中将字段的 index 属性设置为 false 时,这意味着该字段将不会被索引,因此不能用来进行搜索。这通常用于那些不需要被搜索的字段,比如内嵌的文档、大型文本字段等。

    设置字段的 index 属性为 false 有助于减少索引的大小,提高性能,并且可以防止不必要的字段搜索,从而提高搜索的效率。

    如果希望某个字段不参与搜索,可以将其 index 属性设置为 false。但需要注意的是,一旦索引被创建并且数据被索引,就不能再更改字段的 index 属性。

    在Elasticsearch中,geo_point 是一种特殊的字段类型,用于存储地理位置数据,例如经度和纬度。这种类型允许索引和搜索地理位置信息,并支持一系列地理位置相关的查询和聚合操作。

    geo_point 字段类型要求数据格式为经纬度对,通常以数组形式表示,例如:

    {  "location": {    "lat": 40.7128,    "lon": -74.0060  }}

    在上面的示例中,location 字段是一个 geo_point 类型,它包含了纬度(lat)和经度(lon)信息。

    使用 geo_point 类型,可以执行各种地理位置相关的操作,如距离计算、地理范围查询、地理聚合等。这使得 Elasticsearch 成为了一个强大的地理信息系统(GIS)平台,可用于处理各种地理空间数据。

    PUT /your_index_name{  "settings": {    "number_of_shards": 3  },   "mappings": {    "properties": {      "ip": {        "type": "keyword"      },      "region_name": {        "type": "text",        "analyzer": "ik_max_word"      },      "city_name": {        "type": "keyword",        "index":false      },      "location": {        "type": "geo_point"      }    }  }}

    删除

    注意删除索引谨慎操作

    在Elasticsearch中,可以通过设置索引的保留策略(Index Lifecycle Management)来控制索引的保留和删除。这样可以根据需求自动管理索引的生命周期。

    以下是一些常用的方法来防止索引被意外删除:

    1. 设置索引别名(Index Aliases): 在创建索引时,将索引与一个别名关联。然后,应用程序在查询数据时使用别名而不是直接使用索引名称。如果需要删除索引,可以简单地解除别名与索引的关联,而不是直接删除索引。

    2. 设置索引保留策略: 使用 Index Lifecycle Management (ILM) 功能,在索引被创建时为其设置保留策略。通过定义策略,可以控制索引的生命周期,包括何时删除索引。可以基于索引的年龄、文档数量、索引大小等指标来触发删除操作。

    3. 限制删除索引的权限: 在 Elasticsearch 的安全设置中,通过角色和权限控制来限制用户或应用程序对索引的删除权限。确保只有授权的用户或应用程序才能执行删除索引的操作。

    通过以上方法,可以有效地防止索引被意外删除,同时保护数据的安全性和可用性。

    DELETE /your_index_name

    设置索引别名,需要使用Alias API。以下是一个使用DSL语句来设置索引别名的示例:

    PUT /_aliases{  "actions": [    {      "add": {        "index": "your_index_name",        "alias": "your_alias_name"      }    }  ]}

    这个DSL语句将索引 your_index_name 添加到别名 your_alias_name 中。可以根据需要多次执行此操作,以将多个索引添加到同一个别名中,或者将同一个索引添加到多个别名中。

    要删除索引别名,可以使用类似的DSL语句,只需将 add 改为 remove 即可:

    PUT /_aliases{  "actions": [    {      "remove": {        "index": "your_index_name",        "alias": "your_alias_name"      }    }  ]}

    添加

    要使用DSL语句向Elasticsearch添加数据,需要使用Index API。以下是一个使用DSL语句添加数据的示例:

    POST /your_index_name/_doc{  "field1": "value1",  "field2": "value2",  "field3": "value3"}

    在上面的示例中,your_index_name 是要添加数据的索引名称,_doc 是文档的类型,它通常用于Elasticsearch 7.x之后的版本。需要替换 field1、field2 和 field3 为实际的字段名称,并提供对应的值。

    如果索引已经存在,可以使用 PUT 方法替代 POST 方法来更新现有的文档。例如:

    PUT /your_index_name/_doc/your_document_id{  "field1": "new_value1",  "field2": "new_value2",  "field3": "new_value3"}

    在这种情况下,需要提供文档的唯一标识符 your_document_id,以便Elasticsearch能够更新指定的文档。

    更新

    要使用DSL语句更新Elasticsearch中的文档,可以使用Update API。以下是一个使用DSL语句更新文档的示例:

    POST /your_index_name/_update/your_document_id{  "doc": {    "field1": "new_value1",    "field2": "new_value2"  }}

    在上面的示例中,your_index_name 是索引的名称,your_document_id 是要更新的文档的唯一标识符。在 doc 字段中,需要提供要更新的字段及其新值。

    如果想要执行一些特殊的操作,例如增量更新或者基于现有字段值进行更新,可以使用脚本来实现:

    POST /your_index_name/_update/your_document_id{  "script": {    "source": "ctx._source.field1 += params.value",    "params": {      "value": 10    }  }}

    在上面的示例中,使用脚本对 field1 的值进行了增量更新,增加了10。可以根据需要调整脚本和参数。

    查询

    DSL(Domain Specific Language)是Elasticsearch中用于构建查询和操作索引的查询语言。下面是DSL语句的一些示例,包括简单查询、聚合查询和复杂查询:

    1. 简单查询:
    GET /your_index_name/_search{  "query": {    "match": {      "field_name": "search_term"    }  }}

    这个DSL语句执行了一个简单的全文搜索,查找包含指定搜索词的文档。

    1. 聚合查询:
    GET /your_index_name/_search{  "size": 0,  "aggs": {    "avg_price": {      "avg": {        "field": "price"      }    }  }}

    这个DSL语句执行了一个聚合查询,计算了名为 price 的字段的平均值。

    1. 复杂查询:
    GET /your_index_name/_search{  "query": {    "bool": {      "must": [        { "match": { "field1": "value1" }},        { "range": { "field2": { "gte": 10, "lte": 100 }}}      ],      "should": [        { "match": { "field3": "value3" }}      ],      "must_not": [        { "term": { "field4": "value4" }}      ]    }  }}

    这个DSL语句执行了一个复杂的布尔查询,包含了多个条件(必须匹配、应该匹配、不能匹配)。可以根据实际需求调整条件。

上一篇:极路由登录全攻略,步骤详解,轻松成为网络管理达人!

下一篇:探索未知,放置的艺术之魅力与奥秘