弹性搜索:匹配子令牌默认操作符

时间:2018-07-23 21:32:49

标签: elasticsearch

是否可以为子令牌(通过分析器生成的令牌)设置默认运算符?当前似乎默认为OR,并且设置operator不起作用。

我正在使用validate API来查看Elastic Search如何理解查询:

/myIndex/mapping/_validate/query?explain=true

{
  "query":{
    "multi_match":{
      "type":"phrase_prefix",
      "query":"test123",
      "fields":[
        "message"
      ],
      "lenient":true,
      "analyzer":"myAnalyzer"
    }
  }
}

返回哪个

+(message:test123 message:test message:123)

我想要的是

+message:test123 +message:test +message:123

是否有任何方法可以执行而无需使用脚本或拆分术语并在应用程序中创建更复杂的查询?

编辑

使用operatorminimum_should_match并没有什么不同。

我对myAnalyzer的弹性搜索映射是

{
  "analysis":{
    "filter":{
      "foldAscii":{
        "type":"asciifolding",
        "preserve_original":"1"
      },
      "capturePattern":{
        "type":"pattern_capture",
        "patterns":[
          "(\\p{Ll}+|\\p{Lu}\\p{Ll}+|\\p{Lu}+(?!\\p{Ll}+))",
          "(\\d+)"
        ]
      },
      "noDuplicates":{
        "type":"unique",
        "only_on_same_position":"true"
      }
    },
    "myAnalyzer":{
      "filter":[
        "capturePattern",
        "lowercase",
        "foldAscii",
        "noDuplicates"
      ],
      "tokenizer":"standard"
    }
  }
}

0 个答案:

没有答案