首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch:同一字段上精确的多个匹配短语

Elasticsearch:同一字段上精确的多个匹配短语
EN

Stack Overflow用户
提问于 2019-04-11 15:57:03
回答 2查看 1.5K关注 0票数 1

我希望下面的查询返回特定字段中由OR匹配分隔的确切短语的结果。

代码语言:javascript
复制
{
  "query": {
    "nested": {
      "path": "positions",
      "query": {
        "bool": {
          "must": [
            {
              "query_string": {
                "default_field": "positions.companyname",
                "query": "microsoft OR gartner OR IBM"
              }
            },
            {
              "query_string": {
                "default_field": "positions.title",
                "query": "(Chief Information Security Officer) OR (Chief Digital Officer)"
              }
            }
          ]
        }
      },
      "inner_hits": {
        "highlight": {
          "fields": {
            "positions.title": {}
          }
        }
      }
    }
  }
}

结果应该包括准确的首席信息安全官首席数字官

但不包括首席执行官 DigitalE 214E 115Information>E 216E 117军官E 218,因为它目前正在返回。

此外,字段可能不一定有要搜索的确切短语。例如:

“首席信息官”->假

“数字主管-首席数字官”->真人

“前首席信息安全官”->真人

“首席信息官”->假

我想我想说的是,这些短语应该永远在一起(接近)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-11 18:00:09

这个查询会完成这个任务。

代码语言:javascript
复制
{
  "query": {
    "nested": {
      "path": "positions",
      "query": {
        "bool": {
          "must": [
            {
              "query_string": {
                "default_field": "positions.companyname",
                "query": "microsoft OR gartner OR IBM"
              }
            },
            {
              "bool": {
                "should": [
                  {
                    "match_phrase": {
                      "positions.title": "chief information security officer"
                    }
                  },
                  {
                    "match_phrase": {
                      "positions.title": "chief digital officer"
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    }
  }
}

match_phrase确保正在搜索确切的短语。若要匹配同一字段上的多个短语,请使用bool运算符和条件。

票数 0
EN

Stack Overflow用户

发布于 2019-04-11 16:28:38

对于您的用例,我建议您在短语查询 your子句中使用bool查询

像这样的事情应该有效:

代码语言:javascript
复制
GET stackoverflow/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match_phrase": {
            "text": "Chief Information Security Officer"
          }
        },
        {
          "match_phrase": {
            "text": "Chief Digital Officer"
          }
        }
      ]
    }
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55636676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档