首页 文章

Elasticsearch多个前缀查询或匹配

提问于
浏览
0

我想完成以下任务(表示为等效的SQL查询)

WHERE field1 LIKE 'FOO%' OR field2 LIKE 'FOO%'

但是说 boost field2(即如果文档只有两个字段中的一个)匹配field2的文档被提升

我如何在Elasticsearch中实现这一目标?我无休止地搜索文档,并且不断变得更加困惑

我试过了:

POST securities/_search
{
  "query": {
    "bool": {
      "minimum_should_match": 1, 
      "should": [
        {
            "match_phrase_prefix": {
              "field2": "FOO"
            }
        },
        {
          "match_phrase_prefix": {
              "field2": "FOO"
          }
        }
      ]
    }
  }
}

但是我无法在 bool.should[*].match_phrase_prefix 内指定提升

我看到有一个 boost 属性我可以在 bool 级别指定,但我不确定如何应用

1 回答

  • 1

    为了使它工作,你应该改变这个:

    "match_phrase_prefix": {
        "field2": "FOO"
    }
    

    对此:

    "match_phrase_prefix": {
        "field2": {
            "value": "FOO",
            "boost": 2.0
        }
    }
    

    这应该是一个适当的提升语法 .

相关问题