Elastisearch 学习

本文概述了Elasticsearch 7.0及更高版本的高级查询技巧,包括文档检索、集群健康检查、全量查询、关键字搜索、文档ID查找、表达式查询、条件查询、短语匹配、高亮显示、日期操作及数据清理方法。

中文官网网站:

https://www.elastic.co/guide/cn/elasticsearch/guide/current/_retrieving_a_document.html

(基于2.X版本) 7.X版本以后,不再需要类型字段插叙 了

集群健康查询:

curl -XGET 'http://IP:9200/_cluster/health?pretty'

全量查询:

curl -H "Content-Type: application/json" 'http://IP:9200/_count' -d '{"query":{"match_all":{}}}'

关键字查询:

curl -H "Content-Type: application/json" 'http://IP:9200/index_name/type1/_search' -d '{
     "query": {
          "bool": {
               "must": [
                    {
                         "match": {
                              "dutyName": {
                                   "query": "任务名称5169"
                              }
                         }
                    }
               ]
          }
     },
     "from": 0,
     "size": 1
}'

指定文档ID搜索:

curl -H "Content-Type: application/json" 'http://ip:9200/test2/type1/YGKWinoB-a2t_Il3fi3i?pretty'

使用表达式查询

curl -H "Content-Type: application/json" 'http://ip:9200/test2/type1/_search' -d '{
	"query":{
	   "match":{
	      "dutyId":982
	   }
	}
}'

条件查询

curl -H "Content-Type: application/json" 'http://ip:9200/_search?pretty' -d '{
    "query" : {
        "bool": {
            "must": {
                "match" : {
                    "dutyName" : "任务名称5169" 
                }
            },
            "filter": {
                "range" : {
                    "talkTime" : { "gt" : 96} 
                }
            }
        }
    }
}'

精确匹配 短语搜索:

{
    "query" : {
        "match_phrase" : {
            "about" : "rock climbing"
        }
    }
}

高亮匹配:在每个搜索结果中 高亮 部分文本片段,以便让用户知道为何该文档符合查询条件

curl -H "Content-Type: application/json" 'http://ip:9200/_search?pretty' -d '{
    "query" : {
        "bool": {
            "must": {
                "match" : {
                    "dutyName" : "任务名称5169" 
                }
            },
            "filter": {
                "range" : {
                    "talkTime" : { "gt" : 96} 
                }
            }
        }
    },
     "highlight": {
        "fields" : {
            "dutyName" : {}
        }
    }
}'

当执行该查询时,返回结果与之前一样,与此同时结果中还多了一个叫做 highlight 的部分。这个部分包含了 about 属性匹配的文本片段,并以 HTML 标签 <em></em> 封装。

 {
        "_index" : "agg_duty_test3",
        "_type" : "type1",
        "_id" : "sEdjmHoBlchvgIdDKWe2",
        "_score" : 0.024813946,
        "_source" : {
          "id" : 19022,
          "dutyId" : 22,
          "dutyName" : "任务名称8779",
          "flowId" : "0c27Oi94JxzKxYb0id8z",
          ...
          "area" : "0c27Oi94Jx",
          "businessType" : "0c27Oi94JxzKxYb0id8zpQ1ZINXnMR",
          "phoneNum" : "17847507165"
        },
        "highlight" : {
          "dutyName" : [
            "<em>任</em><em>务</em><em>名</em><em>称</em>8779"
          ]
        }
      }

根据日期格式删除es数据:

# ES 7.X以后废弃了 type
curl -H "Content-Type: application/json" 'http://172.31.63.15:9200/index_name/_delete_by_query' -d '{
     "query":{
        "range":{
           "payDate":{
            "lt": "2021-06-26",
            "format":"yyyy-MM-dd"
           }
        }
     }
}'

根据日期条件查询数据

curl -H "Content-Type: application/json" 'http://172.31.63.15:9200/index_name/_search' -d '{
     "query":{
        "range":{
           "payDate":{
            "lt": "2021-06-26",
            "format":"yyyy-MM-dd"
           }
        }
     }
}'


 

待补充整理。。。

### DataX与Elasticsearch集成使用教程 DataX 是阿里巴巴开源的一款异构数据源离线同步工具,支持多种数据源之间的高效数据传输。在将数据从其他数据源(如 MySQL、Oracle 等)同步到 Elasticsearch 时,可以通过 DataX 的 `elasticsearchwriter` 插件完成。 以下是关于 DataX 和 Elasticsearch 集成的详细配置和示例: #### 1. 下载并安装 DataX 首先需要从 DataX 的官方 GitHub 地址下载源码工程[^1]: ```bash git clone https://github.com/alibaba/DataX.git ``` 确保本地环境已正确安装 Python 和相关依赖库。 #### 2. 配置 DataX 的 elasticsearchwriter 插件 在 DataX 的插件目录中找到 `elasticsearchwriter` 插件,并根据需求调整其配置文件。以下是一个完整的 JSON 配置示例[^3]: ```json { "job": { "setting": { "speed": { "byte": 8388608, "channel": 3 }, "errorLimit": { "record": 0, "percentage": 0.02 } }, "content": [ { "reader": { "name": "mysqlreader", "parameter": { "username": "root", "password": "password", "column": ["id", "name", "age"], "connection": [ { "table": ["users"], "jdbcUrl": ["jdbc:mysql://127.0.0.1:3306/test"] } ] } }, "writer": { "name": "elasticsearchwriter", "parameter": { "endpoint": "http://127.0.0.1:9200", "index": "user_index", "type": "_doc", "cleanup": false, "dynamic": true, "settings": { "index": { "number_of_shards": 5, "number_of_replicas": 1 } }, "batchSize": 10000, "splitter": ",", "column": [ { "name": "id", "type": "long" }, { "name": "name", "type": "keyword" }, { "name": "age", "type": "integer" } ] } } } ] } } ``` #### 3. 解释配置项 - **reader 配置**: - `name`: 数据源读取器名称,此处为 `mysqlreader`。 - `username` 和 `password`: 数据库连接的用户名和密码。 - `column`: 指定需要同步的字段。 - `connection`: 包含表名和 JDBC URL。 - **writer 配置**: - `name`: 数据写入器名称,此处为 `elasticsearchwriter`。 - `endpoint`: Elasticsearch 的访问地址。 - `index`: 目标索引名称。 - `type`: 文档类型(在 Elasticsearch 7.x 中 `_doc` 是默认值)。 - `cleanup`: 是否清空目标索引后再写入。 - `dynamic`: 是否启用动态映射。 - `settings`: 索引的分片和副本设置。 - `batchSize`: 批量写入大小。 - `column`: 定义字段名称及其类型。 #### 4. 动态模板设置 为了更好地控制 Elasticsearch 的字段映射,可以提前定义动态模板[^4]。例如: ```json PUT _template/user_template { "order": 1, "index_patterns": ["user_index"], "settings": { "number_of_shards": 5, "number_of_replicas": 1 }, "mappings": { "dynamic_templates": [ { "strings_as_keywords": { "match_mapping_type": "string", "mapping": { "type": "keyword" } } } ], "properties": { "id": { "type": "long" }, "name": { "type": "text", "fields": { "keyword": { "type": "keyword" } } }, "age": { "type": "integer" } } } } ``` #### 5. 运行 DataX 任务 将上述 JSON 配置保存为文件(如 `job.json`),然后通过以下命令运行任务: ```bash python datax.py job.json ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值