elasticsearch搜索详解

一、elasticsearch搜索精准度排序

elasticsearch是一个具有强大搜索能力的搜索引擎,涉及到搜索精准度排序,通常需要先设置mapping,即定义index的字段类型、分词器等信息。然后,可以通过给相关字段加boost的方式,提高搜索结果相关度。

PUT /my-index
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "boost": 2
      },
      "content": {
        "type": "text"
      }
    }
  }
}

在上述代码中,对于title字段使用了boost=2的方式,表示搜索结果中带有匹配title关键词的文档权重将加倍。

二、elasticsearch集群

elasticsearch可以支持多个节点组成一个集群,增强数据可靠性和高可用性。

可以通过下面的方式创建一个集群:

PUT /my-index
{
    "settings": {
        "number_of_shards": 3,
        "number_of_replicas": 2
    }
}

上述代码中,number_of_shards表示该index被分成3个shards,而number_of_replicas=2表示每个shard对应的副本数是2个。

三、elasticsearch搜索引擎

elasticsearch作为一个搜索引擎,它的搜索能力来自于几个方面:

1)全文搜索。elasticsearch内置了一组强大的分词器,能够智能地处理中文、英文等多种语言的分词需求;

2)过滤器和聚合器。在搜索过程中,可以针对不同的条件设置各种过滤器和聚合器,比如日期范围、产品价格区间等;

3)搜索建议。elasticsearch内置了多种搜索建议算法,可以根据用户已经输入的部分关键词,给出相关的搜索建议。

四、elasticsearch搜索指定分词

在elasticsearch中,可以通过指定分词器的方式,控制搜索过程中使用的分词方式。

例如,在下面的代码中,使用了ik_max_word分词器来处理content字段的分词需求:

PUT /my-index
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "analyzer": "ik_max_word"
      },
      "content": {
        "type": "text",
        "analyzer": "ik_max_word"
      }
    }
  }
}

五、elasticsearch搜索商品

在电商场景中,通常需要使用elasticsearch来搜索商品。下面是一个例子,使用了match查询来实现搜索商品的功能:

GET /_search
{
  "query": {
    "match": {
      "title": "MacBook"
    }
  }
}

上述代码中,匹配了title字段中包含MacBook关键词的商品。

六、elasticsearch搜索原理

elasticsearch搜索原理可以简单概括为:先根据用户输入的关键词构建Query DSL查询语句,然后在文档(Document)中进行搜索,找出与查询语句匹配的文档并返回。

搜索过程中通常包括以下几个步骤:

1)分词。elasticsearch内置了一组强大的分词器,能够智能地处理中文、英文等多种语言的分词需求;

2)查询解析。elasticsearch将查询语句解析成内部的Lucene查询语法;

3)搜索。elasticsearch会在所有的shard上执行查询,将结果合并之后返回给用户。在搜索过程中,elasticsearch会使用算法计算每个文档的得分,然后按照得分从高到低排序。

七、elasticsearch搜索方式

elasticsearch支持多种搜索方式,包括match查询、wildcard查询、range查询等。

下面是一个wildcard查询的例子:

GET /_search
{
  "query": {
    "wildcard": {
      "title": "*book*"
    }
  }
}

上述代码中,匹配了title字段中包含book关键词的商品。

八、elasticsearch搜索过程

在搜索过程中,elasticsearch通常需要先执行分词、查询解析和搜索几个步骤。

以下是一个简单的搜索过程例子:

POST /my-index/_search
{
    "query": {
        "match":{
            "title": "MacBook"
        }
    }
}

在上述代码中,先查询匹配title字段中包含MacBook的文档,然后返回搜索结果。

九、elasticsearch搜索语法

elasticsearch支持多种查询语法,包括Query DSL、URI Search等。

以下是一个URI Search的例子:

GET /my-index/_search?q=title:MacBook

上述代码中,使用了title关键词进行搜索。

十、elasticsearch搜索优化

在实际使用elasticsearch进行搜索时,需要考虑一些搜索优化技巧。

例如,可以通过使用bool查询来组合多种查询,提高搜索结果相关度:

GET /_search
{
    "query":{
        "bool":{
            "must":[{
                "match":{
                    "title":"最新款 MacBook Air"
                }
            }],
            "should":[{
                "match":{
                    "description":"轻薄便携,适合出差"
                }
            }],
            "must_not":[{
                "match":{
                    "color":"黄色"
                }
            }]
        }
    }
}

上述代码中,同时对title字段和description字段进行了查询,提高了搜索结果相关度。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/245408.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 13:09
下一篇 2024-12-12 13:09

相关推荐

  • Elasticsearch API使用用法介绍-get /_cat/allocation

    Elasticsearch是一个分布式的开源搜索和分析引擎,支持全文检索和数据分析,并且可伸缩到上百个节点,处理PB级结构化或非结构化数据。get /_cat/allocation…

    编程 2025-04-28
  • Elasticsearch Scroll Java的使用指南

    本文旨在详细介绍如何使用Elasticsearch Scroll Java。Elasticsearch Scroll Java是一种高效的遍历大型数据集的方法。通过它,我们可以逐个…

    编程 2025-04-27
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • 详解eclipse设置

    一、安装与基础设置 1、下载eclipse并进行安装。 2、打开eclipse,选择对应的工作空间路径。 File -> Switch Workspace -> [选择…

    编程 2025-04-25

发表回复

登录后才能评论