模糊性不适用于elasticsearch中的查询字符串

时间:2018-03-13 16:05:53

标签: elasticsearch elasticsearch-6

我有一些查询

{ type: 'Wandering',
   zone: '1',
   personName: 'Dmytro',
   personRoom: 'Room_73' } }

使用通配符和模糊与查询字符串,但看起来,当我键入'Wandring'或'wadnering'时,我预计模糊会产生转置。

 'query': {
                    'query_string' : {
                        'query': `*${search}*~1 OR *${search}~1`,
                        'analyze_wildcard': true,
                    },
                }

定义映射。也许这取决于文件索引的方式 映射

{
  "call": {
    "mappings": {
      "Call": {
        "properties": {
          "personName": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "personRoom": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "type": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "zone": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          }
        }
      }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

这应该有效:

                'query_string' : {
                    'query': `${search}~1`,
                    'analyze_wildcard': true,
                }

关于通配符,我建议在查看之前查看alternative search types。它们特别沉重,在搜索时表现不佳,特别是领先的通配符。