依赖:
- Elasticsearch.Net
- NEST
直接NuGet安装即可
- 单条插入
public static void Insert(string url, string index, object t)
{
var settings = new ConnectionSettings(new Uri(url)).DefaultIndex(index);
var client = new ElasticClient(settings);
client.IndexDocument(t);
}
- 多条插入
public static void InsertMany(string url, string index, IEnumerable<object> docs)
{
var settings = new ConnectionSettings(new Uri(url)).DefaultIndex(index);
var client = new ElasticClient(settings);
client.IndexMany(docs);
}
- 查询
(代码是示意,逻辑是错的,也没有具体的对应的数据模型。看需求,各类查询该加加,该删删,常用的都记了一下)
public static void Search(string url, string index, string field,string fieldValue, decimal baseLine, int count)
{
var settings = new ConnectionSettings(new Uri(url)).DefaultIndex(index);
var client = new ElasticClient(settings);
var r = client.Search<dynamic>(
s =>
s.Query(
q => q.Bool(
b => b.Filter(new NumericRangeQuery() { Field = field, GreaterThan = Convert.ToDouble(baseLine) })
.Must(new QueryContainer[] { new TermQuery() { Field = field, Value = fieldValue}, new MatchQuery() { Field=field, Operator = Operator.Or, Query=fieldValue } })
)
)
//排序
.Sort(sort => sort.Descending(field))
//字段过滤
.Source(source => source.Includes(f => f.Fields(new string[] { "field1", "field2" }))).Size(count)
);
}