当前位置: 首页 > 面试题库 >

使用Elasticsearch搜索字符串的范围查询

席俊驰
2023-03-14
问题内容

我正在尝试将范围查询与elasticsearch一起使用

{
    "query": {
        "range": {
             "order_no": {
                 "gte": "VM-0001",
                 "lte": "VM-0005"
             }
         }
    }
}

但是弹性返回没有结果。我发现系统存在字符串包含-或问题_

这是该字段的映射:

"order_no" : {
      "type" : "string",
      "index_analyzer" : "str_index_analyzer",
      "search_analyzer" : "str_search_analyzer"
}
{
  "analysis": {
    "analyzer": {
      "str_search_analyzer": {
        "tokenizer": "keyword",
        "filter": [
          "lowercase"
        ]
      },
      "str_index_analyzer": {
        "tokenizer": "keyword",
        "filter": [
          "lowercase",
          "substring"
        ]
      }
    },
    "filter": {
      "substring": {
        "type": "nGram",
        "min_gram": 1,
        "max_gram": 20
      }
    }
  }
}

问题答案:
{
  "query": {
    "range": {
      "order_no": {
        "gte": "vm-0001",
        "lte": "vm-0005"
      }
    }
  }
}


 类似资料:
  • 版本字符串有一个支持java类(版本),它实现了Comparable。 我的分析器是一个分析器包装器,它是一个小写和空格分析器,类似于内置的分析器。我使用经典的查询解析器进行搜索。在确切的条件下搜索工作良好。 我想做的是: 我试图在索引之前将版本字符串转换为int,但查询输入需要以某种方式转换,以便在搜索之前将版本字符串转换为int。 看起来我必须为version字段实现一个自定义分析器,但是我在

  • 我使用elasticsearch处理带有日期值的字符串字段的数据,如下所示: 我试图使用范围筛选器从日期到日期获取值。例如: 但是结果不包含的值 如果使用或,则结果中将包含的值。 我的查询有什么问题?

  • 问题内容: 在elasticsearch中,我们有两个字段:街道编号1和街道编号2。我们在Elastic Search中还有一个Address字段,而Address是2个字段与其他一些字段的组合。因此,我们的地址为: 1604-1612卡尔弗大厦 1608- 1645公园别墅 如果用户使用1610搜索,则应同时返回该地址。 有关如何形成查询的任何帮助? 问题答案: 想法是利用数据类型并将最小和最大

  • 问题内容: 因此,我正在编写一个简单的程序来输入字符串并计算总数。的米 所以,这是我的代码 where 和str是我接受过的字符串,但是此错误不断出现 这是什么错误以及如何将其删除? 问题答案: 字符串,有效索引从0到n-1; 更改 至

  • 问题内容: 弹性搜寻1.6 我想索引包含连字符的文本,例如U-12,U-17,WU-12,T恤…,并能够使用“简单查询字符串”查询来搜索它们。 数据样本(简体): 所以我去了这个映射: 使用以下查询进行搜索: 什么有效: “ U-12”,“ U ”,“ t ”,“ ts *” 什么不起作用: “ U-”,“ u-1 ”,“ t-”,“ t-sh ”,… 看来char过滤器未在搜索字符串上执行?我该

  • 问题内容: 我正在发送此请求 我得到正确的结果 但是当我想按单词部分搜索时,例如 我没有得到任何结果: 我究竟做错了什么? 问题答案: 这是因为您的字段可能已由标准分析器(默认设置)进行了分析,并且标题已被标记为三个标记,并且。 为了搜索单词的任何子串,您需要创建一个自定义分析器,该分析器利用ngram令牌过滤器来索引每个令牌的所有子串。 您可以这样创建索引: 然后,您可以重新索引数据。这将使标题