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

相关推荐
it噩梦2 小时前
es 中 terms set 使用
大数据·elasticsearch
喝醉酒的小白5 小时前
Elasticsearch 配置文件
大数据·elasticsearch·搜索引擎
missay_nine8 小时前
Elasticsearch
大数据·elasticsearch·搜索引擎
it噩梦9 小时前
深度分析 es multi_match 中most_fields、best_fields、cross_fields区别
java·elasticsearch
喝醉酒的小白10 小时前
ES 集群 A 和 ES 集群 B 数据流通
大数据·elasticsearch·搜索引擎
炭烤玛卡巴卡10 小时前
初学elasticsearch
大数据·学习·elasticsearch·搜索引擎
it噩梦10 小时前
es 中使用update 、create 、index的区别
大数据·elasticsearch
Mitch31112 小时前
【漏洞复现】CVE-2015-3337 Arbitrary File Reading
elasticsearch·网络安全·docker·漏洞复现
Mitch31112 小时前
【漏洞复现】CVE-2015-5531 Arbitrary File Reading
web安全·elasticsearch·网络安全·docker·漏洞复现
喝醉酒的小白14 小时前
Elasticsearch(ES)监控、巡检及异常指标处理指南
大数据·elasticsearch·搜索引擎