ElasticSearch支持根据英文或者数字进行模糊查询

这篇具有很好参考价值的文章主要介绍了ElasticSearch支持根据英文或者数字进行模糊查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:以下操作均在kibana7.7.0中操作。

问题描述:

根据es去查询商品的名称,中文查询能查询出数据,但是只输入部分英文或者数字,查询不出数据。

原因分析:

es中的分词器,只将全部的数字和英文做了分词,即将他们看成一个单词,所以,只输入部分英文或者数字时,不存在该部分的分词,估查询不出数据。

举例:

查询名称为 【来自1998年的野狼disco】的商品。

	查询1:如果查询 【1998】,可以;
	查询2:如果查询 【199】,不行;
	查询3:如果查询 【disco】,可以;
	查询4:如果查询 【dis】,不行。

解决方案:

1、创建索引

# 创建索引,并设置分词器
PUT /goods_index
{
  "settings": {
        "index.max_ngram_diff":10,
        "analysis": {
          "analyzer": {
            "my_ngram_analyzer": {
              "tokenizer": "my_ngram_tokenizer"
            }
          },
          "tokenizer": {
            "my_ngram_tokenizer": {
              "type": "ngram",
              "min_gram": 1,
              "max_gram": 10,
              "token_chars": [
                "letter",
                "digit"
              ]
            }
          }
        }
      },
  "mappings": {
    "properties": {
      "name":{
        "type": "text",
        "analyzer": "my_ngram_analyzer"
      },
      "description":{
        "type": "text"
      },
      "price": {
        "type": "double"
      },
      "createtime": {
        "type": "date",
        "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
      }
    }
  }
}

重点是红色部分,对需要查询的字段设置一个自定义的NGram分词器。
(支持模糊查询数字和英文的关键!)
elasticsearch 数字模糊查询,Elasticsearch,elasticsearch,大数据,搜索引擎

2、增加文档

# 增加数据
PUT /goods_index/_doc
{
  "name" : "来自1998年的野狼disco",
  "description" : "暂无描述。。。",
  "createtime" : "1998-01-01 23:59:59",
  "price": 1.99
}

3、模糊查询

# 模糊查询文档,根据'得分'和创建时间排序,并高亮
GET /goods_index/_search
{
    "query": {
        "match": {
            "name": "199"
        }
    },
    "sort": [
        {
            "_score": {
                "order": "desc"
            }
        },
        {
            "createtime": {
                "order": "desc"
            }
        }
    ],
    "highlight": {
        "fields": {
            "name": {}
        }
    },
    "size": 10000
}

elasticsearch 数字模糊查询,Elasticsearch,elasticsearch,大数据,搜索引擎

执行,发现已经可以根据英文或者数字进行模糊查询了。

友情链接:ElasticSearch——全文搜索引擎文章来源地址https://www.toymoban.com/news/detail-525314.html

到了这里,关于ElasticSearch支持根据英文或者数字进行模糊查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • matlab 使用预训练神经网络和SVM进行苹果分级(带图形界面)支持其他物品图片分级或者分类

    目录 数据集: 实验代码:alexnet版 如果你的matlab不是正版,先看这里: 数据集结构: 训练代码: 训练结果:  图形界面: 界面展示: 其他:   输出结果:         实验思路是使用预训练神经网络对图片进行特征提取,然后再使用SVM对得到的特征进行处理。         写

    2024年02月09日
    浏览(52)
  • Cesium中加载3dtiles数据模糊或者清晰解决方法

    问题 : 当我们通过Cesium来加载3dtiles数据的时候,可能会遇到的问题有两种:模糊(流畅)、精细(卡顿),出现这两种问题的原由是生产3dtiles的软件不一样,前者生产的数据默认适合低性能计算机,后者生产的数据默认适合高性能计算机,那有没有办法一台普通的计算机同

    2024年02月12日
    浏览(38)
  • MySQL 根据多字段查询重复数据 MySQL根据某一个或者多个字段查找重复数据

    在实际的数据库应用中,我们经常需要根据多个字段来查询重复的数据。MySQL 提供了一些方法来实现这个功能,让我们能够快速准确地找到和处理重复数据。本文将介绍如何使用 MySQL 来根据多字段查询重复数据,并提供相应的代码示例。 什么是重复数据? 重复数据指的是在

    2024年02月12日
    浏览(39)
  • python判断英文字母和数字,python怎么判断英文字母

    本篇文章给大家谈谈python判断英文字母和数字,以及python判断英文字母函数,希望对各位有所帮助,不要忘了收藏本站喔。 判断如下: 1、逐个字符用ord()判断ascii码:a - z : 97 - 122,A - Z : 65 - 90。 2、def is_english_char(ch):if ord(ch) not in (97,122) and ord(ch) not in (65,90):return False,r

    2024年02月07日
    浏览(43)
  • 技术支持面试 英文自我介绍

    Hello, my interviewer, my name is Zhang Ruichao, I come from Hunan, Changsha. I graduated from Hunan Agricultural University, majored in Intelligent Science and Technology, which means I spent 4 years in a key university with unified enrollment.  I\\\'m looking for a suitable promotion in Kanzhun Limited, until I found your company. So today I am coming for ap

    2024年02月07日
    浏览(75)
  • java根据音频流或者音频的地址获取分贝的工具类

    工具类 测试类

    2024年02月06日
    浏览(47)
  • 使用深度学习识别英文字母和数字

    在本教程中,我们将使用深度学习技术来识别包含英文字母和数字的图像。我们将使用Python和TensorFlow来构建和训练模型,并使用OpenCV来处理图像。 步骤 1: 准备数据集 首先,我们需要准备一个包含英文字母和数字的数据集。我们将从网上下载一个包含样本图像的数据集,并将

    2024年04月10日
    浏览(36)
  • ChatGPT本地部署(支持中英文,超级好用)!

    今天用了一个超级好用的Chatgpt模型——ChatGLM,可以很方便的本地部署,而且效果嘎嘎好,经测试,效果基本可以平替内测版的文心一言。 目录 一、什么是ChatGLM? 二、本地部署 2.1 模型下载 2.2 模型部署 2.3 模型运行 2.3.1 直接在命令行中输入进行问答 2.3.2 利用 gradio 库

    2023年04月14日
    浏览(53)
  • C#Winform中DataGridView控件根据鼠标左右键获取单元格值或者行列

    有多种方法可以获取单元格的值或者行列,此处选用了两种方式去获取分别用了CurrentCell方法和Rows[].Cells[]的方法去获取行列值 鼠标左键获取单独行列值 此处获取左键行列值的触发条件是表格中数据变化获取,对应DataGridView事件CellValueChanged。 用方法CurrentCell中的Value,RowIndex

    2024年02月09日
    浏览(42)
  • 利用PyTorch训练模型识别数字+英文图片验证码

    摘要:使用深度学习框架PyTorch来训练模型去识别4-6位数字+字母混合图片验证码(我们可以使用第三方库captcha生成这种图片验证码或者自己收集目标网站的图片验证码进行针对训练)。 一、制作训练数据集 我们可以把需要生成图片的一些参数放在setting.py文件中,方便以后更

    2024年04月15日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包