elasticsearch - Elasticsearch多个前缀查询或匹配

标签 elasticsearch

我想完成以下任务(表示为等效的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 级别上指定,但是我不确定如何应用

最佳答案

为了使其正常工作,您应该更改此设置:

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

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

这应该是增强的正确语法。

关于elasticsearch - Elasticsearch多个前缀查询或匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52316492/

相关文章:

python - 如何在搜索查询中加入文档

java - 如何编写java单元测试来构建elasticsearch查询?

ruby-on-rails - Heroku上的Searchkick无法正常工作

elasticsearch - ElasticSearch聚合,对数组项进行过滤

json - 在ElasticSearch中使用字段和提供的ID进行简单搜索

elasticsearch - 弹性搜寻效能

ElasticSearch 2.4.6 根本没有启动,没有任何错误消息 Ubuntu 16.04

php - 在 PHP 的 Elasticsearch 中使用建议器时出现非法参数异常

elasticsearch - elasticsearch中是否需要 bool 字段索引

elasticsearch - 在 Elasticsearch 中获取索引文档的倒排索引