Elastic Search操作入门
前言
Elastic Search是基于Lucene这个非常成熟的索引方案,另加上一些分布式的实现:集群,sharding,replication等。具体可以参考我同事写的文章。
本文主要介绍ES入门,包括最简单的操作和用C#代码操作ES。ES本身有很多复杂的功能,本文只是一个入门。
安装并启动ES
去https://www.elastic.co/下载zip文件,解压缩到本地硬盘。实现需要安装java环境。
双击elasticsearch.bat,启动ES。
打开浏览器,如果有类似如下输出,则启动成功。
{
"name" : "Gorgeous George",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "2.3.5",
"build_hash" : "90f439ff60a3c0f497f91663701e64ccd01edbb4",
"build_timestamp" : "2016-07-27T10:36:52Z",
"build_snapshot" : false,
"lucene_version" : "5.5.0"
},
"tagline" : "You Know, for Search"
}
通过postman操作
postman是chrome的一个插件,可以作为http client模拟操作。
创建index
命令:
PUT http://localhost:9200/chzhao-index
返回
{
"acknowledged": true
}
存入数据
PUT http://localhost:9200/chzhao-index/employee/1
body内容
{
"first_name" : "John",
"last_name" : "Smith",
"age" : 25,
"about" : "I love to go rock climbing",
"interests": [ "sports", "music" ]
}
返回
{
"_index": "chzhao-index",
"_type": "employee",
"_id": "1",
"_version": 2,
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"created": false
}
查询数据
全部查询
查询全部数据
命令
http://localhost:9200/chzhao-index/employee/_search
返回
{
"took": 13,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1,
"hits": [
{
"_index": "chzhao-index",
"_type": "employee",
"_id": "1",
"_score": 1,
"_source": {
"first_name": "chunhui",
"last_name": "zhao",
"age": 31,
"about": "i love keke",
"interests": [
"go",
"coding"
]
}
}
]
}
}
根据某一个字段查询
输入
http://localhost:9200/chzhao-index/employee/_search?q=last_name:Zhao
返回
{
"took": 10,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.30685282,
"hits": [
{
"_index": "chzhao-index",
"_type": "employee",
"_id": "1",
"_score": 0.30685282,
"_source": {
"first_name": "chunhui",
"last_name": "zhao",
"age": 31,
"about": "i love keke",
"interests": [
"go",
"coding"
]
}
}
]
}
}
使用DSL语句查询
输入
POST http://localhost:9200/chzhao-index/employee/_search
参数
参数要放在body里面。因为这样,不能用put方法。
{
"query" : {
"match" : {
"last_name" : "Zhao"
}
}
}
返回
{
"took": 12,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.30685282,
"hits": [
{
"_index": "chzhao-index",
"_type": "employee",
"_id": "1",
"_score": 0.30685282,
"_source": {
"first_name": "chunhui",
"last_name": "zhao",
"age": 31,
"about": "i love keke",
"interests": [
"go",
"coding"
]
}
}
]
}
}
c#代码
c#代码应用了NEST等包,具体如下。
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Elastic" version="1.0.3.0" targetFramework="net45" />
<package id="Elasticsearch.Net" version="2.4.3" targetFramework="net45" />
<package id="NEST" version="2.4.3" targetFramework="net45" />
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net45" />
</packages>
核心代码
namespace ElasticSearchDemo
{
public class Person
{
public string Id { get; set; }
public string Firstname { get; set; }
public string Lastname { get; set; }
public string[] Chains { get; set; }
public string Content { get; set; }
}
}
using Nest;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
namespace ElasticSearchDemo
{
class ESTool
{
private ElasticClient esClient = null;
private string index = "test-index";
public ESTool()
{
var node = new Uri("http://localhost:9200");
ConnectionSettings settings = new ConnectionSettings(node);
settings.DefaultIndex(index);
this.esClient = new ElasticClient(settings);
}
public void Save()
{
IEnumerable<Person> persons = new List<Person>
{
new Person()
{
Id = "4",
Firstname = "chunhui",
Lastname = "zhao",
Chains = new string[]{ "a","b","c" },
Content = "dad"
},
new Person()
{
Id = "5",
Firstname = "keke",
Lastname = "zhao",
Chains = new string[]{ "x","y","z" },
Content = "daughter"
}
};
this.esClient.IndexMany<Person>(persons, index);
}
public void Search()
{
var rs = this.esClient.Search<Person>(s => s.Index(index));
Console.WriteLine(JsonConvert.SerializeObject(rs.Documents));
}
}
}
参考
Elastic Search操作入门的更多相关文章
- 学习ELk之----02. Elastic Search操作入门
我们将使用Postman来进行日志写入操作.Postman的下载地址,你可以Google一下. 1. 在上一节中,我们启动完成ELK的Docker后,可以在浏览器中打开:http://192.168. ...
- Elastic Search快速入门
https://blog.csdn.net/weixin_42633131/article/details/82902812 通过这个篇文章可以快速入门,快速搭建一个elastic search de ...
- Elastic Search中Document的CRUD操作
一. 新增Document在索引中增加文档.在index中增加document.ES有自动识别机制.如果增加的document对应的index不存在.自动创建,如果index存在,type不存在自动创 ...
- elastic search book [ ElasticSearch book es book]
谁在使用ELK 维基百科, github都使用 ELK (ElasticSearch es book) ElasticSearch入门 Elasticsearch入门,这一篇就够了==>http ...
- elastic search(以下简称es)
参考博客园https://www.cnblogs.com/Neeo/p/10304892.html#more 如何学好elasticsearch 除了万能的百度和Google 之外,我们还有一些其他的 ...
- elastic search 学习笔记
Elastic search在数据分析的应用中相当于一个数据库的搜索引擎. 跟MySQL类似,它有自己的查询语言,只不过不是关系型数据库,属于NoSQL. 可以根据索引从分布式服务器文件系统中快速存取 ...
- elastic search 学习 一
初步阅读了elastic search 的文档,并使用command实践操作. 大概明白其概念模型.
- tpot从elastic search拉攻击数据之一 找本地数据端口
前面,我们已经在ubuntu服务器上部署好了tpot,并启动进行数据捕获 可以通过64297端口登陆到kibana可视化平台查看捕获到攻击的情况. 现在要拉取攻击数据了,但是该怎么拉呢? 看了一上午的 ...
- 深入分析Elastic Search的写入过程
摘要 之前写过一篇ElasticSearch初识之吐槽,不知觉竟然过去了两年了.哎,时光催人老啊.最近又用到了ES,想找找过去的总结文档,居然只有一篇,搞了半年的ES,遇到那么多的问题,产出只有这么点 ...
随机推荐
- Linux内核设计笔记8——下半部
# 下半部笔记 1. 软中断 软中断实现 软中断是在编译期间静态分配,其结构如下所示,结构中包含一个接受该结构体指针作为参数的action函数. struct softirq_action{ void ...
- c#,mysql,读取乱码问题
1.首先保证数据库的表是UTF8类型:数据库是否是utf8无关紧要: 2.c#连接数据库语句添加“charset=utf8”一句:.exe.config是否添加这一句也无关紧要: 3.访问数据库数据用 ...
- MFC动态创建控件及其消息响应函数
这几天专门调研了一下MFC中如何动态创建控件及其消息响应函数. 参考帖子如下: (1)http://topic.csdn.net/u/20101204/13/5f1b1e70-2f1c-4205-ba ...
- 会话模型与SSO
关于会话模型其实网站已有很多帖子说明,其中有关于sessionid,cookie以及他们之间的关系,自己先了解吧 1 会话模型 会话模型是客户端和服务端交互的一种模型,会话模型友好的处理了客户端有无通 ...
- 【week2】Scrum中的站立会议
Scrum站立会议 站立会议给我的第一印象就是站着开会,在经过我查阅资料之后,发现也是差不多的意思.学术一点的分析就是在Sprint开始后,团队将会在每个工作日特定时间举行一个简短会议,每次会议 ...
- 【Redis】- 主从复制
Redis跟MySQL一样,拥有非常强大的主从复制功能,而且还支持一个master可以拥有多个slave,而一个slave又可以拥有多个slave,从而形成强大的多级服务器集群架构. redis的主从 ...
- Microsoft Edge goes Chromium
Microsoft Edge goes Chromium https://techcrunch.com/2018/12/06/microsoft-edge-goes-chromium-and-maco ...
- Swift & Unicode
Swift & Unicode emoji let == const https://www.runoob.com/swift/swift-basic-syntax.html
- 【bzoj3529】[Sdoi2014]数表 莫比乌斯反演+离线+树状数组
题目描述 有一张n×m的数表,其第i行第j列(1 <= i <= n ,1 <= j <= m)的数值为能同时整除i和j的所有自然数之和.给定a,计算数表中不大于a的数之和. ...
- 【bzoj2929】[Poi1999]洞穴攀行 网络流最大流
题目描述 洞穴学者在Byte Mountain的Grate Cave里组织了一次训练.训练中,每一位洞穴学者要从最高的一个室到达最底下的一个室.他们只能向下走.一条路上每一个连续的室都要比它的前一个低 ...