.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、响应效果

相关推荐
阿里云大数据AI技术12 小时前
云栖实录 | 阿里云助力金山办公打造智能搜索新标杆:WPS云文档搜索技术全面升级
人工智能·elasticsearch·搜索引擎
会飞的小蛮猪14 小时前
ELK运维之路(定时清理索引)
elasticsearch·kibana·logstash
sky-stars15 小时前
Visual Studio 2022 安装使用:Entity Framework Core
asp.net·.netcore·visual studio
Elasticsearch19 小时前
使用 Elasticsearch 和 Microsoft 的 Agent Framework 构建智能代理应用
elasticsearch
阿Y加油吧19 小时前
快速入门elasticsearch
elasticsearch
Elastic 中国社区官方博客19 小时前
在 Elastic Observability 中,启用 TSDS 集成可节省高达 70% 的指标存储
大数据·运维·数据库·elasticsearch·搜索引擎·全文检索·时序数据库
半梦半醒*20 小时前
ELK2——logstash
linux·运维·elk·elasticsearch·centos·1024程序员节
会飞的小蛮猪20 小时前
ELK运维之路(Logstash-插件)
运维·经验分享·elk·elasticsearch·logstash
半梦半醒*20 小时前
ELK3——kibana
linux·运维·elasticsearch·centos·gitlab
CodeAmaz20 小时前
ELK(Elasticsearch + Logstash + Kibana + Filebeat)采集方案
java·elk·elasticsearch·1024程序员节