当前位置: 首页 > 知识库问答 >
问题:

elasticsearch中的Startwith查询(无短语)

龙玄天
2023-03-14

以下是可用的样本数据:

    null

示例查询:

"query": {
 "bool": {
  "must": [
    {
      "prefix": {
        "sfield.exact": {
          "value": "car hire"
        }
      }
    }
  ]
}

}

尝试了match_phrase_prefix,这也类似于prefix

示例查询:

"query": {
    "bool": {
      "must": [
        {
          "match_phrase_prefix": {
            "sfield": {
              "value": "car hire"
            }
          }
        }
      ]
    }
  }
"query": {
        "bool": {
          "must": [
            {
              "prefix": {
                "sfield.exact": {
                  "value": "car "
                }
              }
            },
            {
              "query_string": {
                "default_field": "sfield",
                "query": "car hire*",
                "default_operator": "AND"
              }
            }
          ]
        }
      }
"mappings": {
    "ctype": {
        "_all":       { "enabled": false  },
        "properties": {
            "id": { "type": "long" },
            "cname": { "type": "text" },
            "sfield": {
                "type": "text",
                "fields": {
                    "exact": {
                        "type": "keyword"
                    }
                }
            }
        }
    }
}

共有1个答案

归俊杰
2023-03-14

如果我理解正确的话,您只需要start with选项。所以我建议您使用通配符:

"query": {
 "bool": {
  "must": [
    {
      "wildcard": {
        "sfield.exact": "car hire*"
      }
    }
  ]
}

参见通配符

 类似资料:
  • 我有一个字段,使用空白标记器和小写和asciifolding过滤器进行分析。我试图运行一个同时包含前缀和通配符的查询。我们正在用ElasticSearch取代一个使用纯Lucene的本土搜索引擎,类似的查询确实使用Lucene语法,但在ElasticSearch中不起作用。 例如,该查询将查找在“name”字段中有“Smith John”的所有文档。 如果我省略引号,我会得到结果,但这包括在同一文

  • 问题内容: 我在获取与Elasticsearch一起使用的嵌套查询时遇到问题(如果我删除了查询字符串之一,则可以使用)。我要解决的问题是我有一个包含关闭列表的文档(关闭)。我想在条件满足另一个值的闭包列表中搜索一个值。那只是从argan = 1的闭包中获得价值 我正在得到这个错误响应; 我的映射如下所示。 有人知道我在做什么错吗? 问题答案: 您的查询不是有效的查询。您需要使用适当的复合查询将其他

  • 问题内容: 假设我们有两种索引类型:成员和餐厅。两者都包含城市属性。 我想过滤成员(例如按名称),并希望在结果中包括成员所在城市/城市的餐馆名称列表。 是否可以仅使用一个ES查询来执行此操作?我猜它应该类似于数据库联接。 谢谢。 问题答案: ES没有联接的概念。这是因为它是索引而不是关系数据库。最好打两个电话。一个获取会员的文件,然后另一个获取餐厅。 除非您有特殊情况,否则这仍然应该非常有效。

  • 问题内容: 我是Elasticsearch的新手。我正在尝试编写一个查询,该查询将按字段分组并计算总和。在SQL中,我的查询如下所示: 我有在ES中看起来像这样的数据: 我想本质上在ES中运行与SQL中相同的查询,这样我的结果将类似于(当然是json): 问题答案: 在elasticsearch中,您可以通过使用术语stats facet 实现此目的:

  • 也许查询过滤器不正确?(我尝试了几个选项都没有成功) 错误:{“错误”:“SearchPhaseExecutionException[未能执行阶段[query],总失败;shardFailures{[AS6HqxgNRtyU9-pQKhJsXQ][IDX_Cerception][3]:SearchParseException[[IDX_Cerception][3]:From[-1],大小[-1]:

  • 我试图将查询与exclude查询一起使用,以便它匹配除要排除的术语之外的所有术语。我在一个基本的URI查询中找到了它,但不是常规的JSON查询。如何将此URI转换为JSON类型查询? 其中是不匹配的标记列表。 这是我目前所掌握的: 但是,当我这样做时,仍然包含在结果中。如何排除?