是否有匹配短语在elasticsearch任何查询?



在elasticsearch中,match_phrase查询将匹配完整短语。match_phrase_prefix查询将匹配短语作为前缀。
例如:

"my_field": "confidence ab" 

将匹配:"confidence above;和"对……有信心">

是否有查询"match phrase any"就像下面的例子:

"my_field": "dence ab" 

应该取match: "confidence above"和对

的信心

感谢

有两种方法可以做到这一点

  1. 通过在mapping =>中应用关键字analyzer type在ES中按原样存储字段值做通配符搜索(或)
  2. 使用ngram tokenizer存储字段=>使用或不使用标准或关键字搜索分析器
  3. ,根据您的需求搜索数据

通配符搜索通常是性能低下的。

请根据我的上述建议让我知道你的进展,以便我可以在需要时进一步帮助你

您需要定义字段到关键字的映射,如下所示:

PUT test
{
"mappings": {
"properties": {
"name":{
"type": "keyword"
}
}
}
}

然后使用下面的通配符搜索这个字段:

GET test/_search
{
"query": {
"wildcard": {
"name": {
"value": "*dence ab*"
}
}
}
}

如果您对此有任何问题,请告诉我。

在您的情况下,最简单的解决方案是使用查询字符串查询或简单查询字符串查询。后者对查询语法错误不那么严格。

首先,确保您的字段映射为类型text。下面的示例在test-index下为名为my_field的字段创建映射。

{
"test-index" : {
"mappings" : {
"properties" : {
"my_field" : {
"type" : "text"
}
}
}
}
}

然后,使用带有通配符的查询字符串query进行搜索。

{
"query": {
"query_string": {
"fields": ["my_field"], 
"query": "*dence ab*"
}
}
}

最新更新