.net core 6 集成 elasticsearch 并 使用分词器

1、nuget包安装NEST、安装elasticsearch、kibana、ik分词器、拼音分词器

2、创建操作对象

cs 复制代码
//索引库
static string indexName = "testparticper";
//es 操作对象
ElasticClient elasticClient = new ElasticClient(new ConnectionSettings(new Uri("http://192.168.30.98:9200")));

3、创建一个索引库,字段使用ik分词器

cs 复制代码
#创建索引库
PUT /testparticper
{
  "mappings": {
    "properties": {
      "id": {
        "type": "keyword",
        "index": false
      },
      "name": {
        "type": "text",
        "analyzer": "ik_smart",
        "copy_to": "all"
      },
      "password": {
        "type": "text",
        "index": false
      },
      "all": {
        "type": "text",
        "analyzer": "ik_smart"
      }
    }
  }
}

4、创建需要的实体

cs 复制代码
/// <summary>
	/// 数据
	/// </summary>
	public class EsData
	{
		/// <summary>
		/// 名称
		/// </summary>
		public string name { get; set; } = string.Empty;
		/// <summary>
		/// ,密码
		/// </summary>
		public string password { get; set; } = string.Empty;
	}

	/// <summary>
	/// 分词器
	/// </summary>
    public class EsAnalyzer
    {
        /// <summary>
        /// 名称
        /// </summary>
        public string analyzer { get; set; } = string.Empty;
        /// <summary>
        /// ,密码
        /// </summary>
        public string text { get; set; } = string.Empty;
    }

5、创建两个使用的方法

ps:查询方法和直接使用语句一样

分词器方法没有找到现成使用方法,所有直接http调用,效果一致

cs 复制代码
GET /testparticper/_search
{
  "query": {
    "term": {
      "name": "名称"
    }
  }
}
cs 复制代码
/// <summary>
		/// 获取索引
		/// </summary>
		/// <returns></returns>
		public string GetIndex(string name)
		{
            ISearchResponse<EsData> esData = elasticClient.Search<EsData>(x =>
			{
				 return x.Index(indexName).Query(q => q.Term("name", name));
			});

			return esData.Documents.ToJson();
		}

        /// <summary>
        /// 分词器
        /// </summary>
        /// <returns></returns>
        public string Analyze(string body)
        {
			string str = new HttpTool().PostSendMessage("http://192.168.30.98:9200", "/_analyze", body);
            return str;
        }

6、es使用

cs 复制代码
/// <summary>
    /// es操作
    /// </summary>
    [Route("[controller]")]
    [StartAutoWrite]
    public class ElasticsearchController : Controller
    {
        [AutoWrite]
        ElasticsearchTool? elasticsearch;

        /// <summary>
        /// 查询
        /// </summary>
        /// <returns></returns>
        // GET: api/values
        [HttpGet("exist")]
        public string Exist([FromQuery] string name)
        {
            return elasticsearch?.GetIndex(name) ?? string.Empty;
        }

        /// <summary>
        /// 分词器
        /// </summary>
        /// <param name="esAnalyzer"></param>
        /// <returns></returns>
        [HttpPost("analyze")]
        public string Analyze([FromBody] EsAnalyzer esAnalyzer)
        {
            return elasticsearch?.Analyze(esAnalyzer.ToJson()) ?? string.Empty;
        }
    }

7、响应效果

相关推荐
程序辕日记19 小时前
使用SQL查询ES数据
sql·elasticsearch·jenkins
啥都不懂的小小白21 小时前
Elasticsearch入门指南(三) 之 高级篇
大数据·elasticsearch·jenkins
qq_54702617921 小时前
Elasticsearch 集群搭建
大数据·elasticsearch·搜索引擎
destinyol1 天前
wsl-docker环境下启动ES报错vm.max_map_count [65530] is too low
elasticsearch·docker·容器
大哥喝阔落1 天前
git操作0409
大数据·git·elasticsearch
Elastic 中国社区官方博客1 天前
将 CrewAI 与 Elasticsearch 结合使用
大数据·人工智能·elasticsearch·机器学习·搜索引擎·ai·全文检索
铭毅天下1 天前
Elasticsearch 8.X 如何利用嵌入向量提升搜索能力?
大数据·elasticsearch·搜索引擎·全文检索
八股文领域大手子1 天前
《从 MyBatis-Plus 到 Elasticsearch:一个后端的性能优化踩坑实录》
elasticsearch·性能优化·mybatis
CXH7281 天前
Git 的进阶功能和技巧
大数据·elasticsearch·搜索引擎
时光追逐者1 天前
一款基于 .NET 8 + Vue 开源的、企业级中后台权限管理系统
前端·vue.js·microsoft·开源·c#·.net·.netcore