kibana操作es使用DSL查询

前言

记录下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之后的版本。需要替换 field1field2field3 为实际的字段名称,并提供对应的值。

如果索引已经存在,可以使用 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语句执行了一个复杂的布尔查询,包含了多个条件(必须匹配、应该匹配、不能匹配)。可以根据实际需求调整条件。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>