【问题标题】:ElasticSearch: Query_String but must match 1 of the terms in a specific field?ElasticSearch:Query_String 但必须匹配特定字段中的一个术语?
【发布时间】:2013-11-30 01:10:24
【问题描述】:

我想构建一个 ElasticSearch 查询,在其中查询多个字段,但查询中的一个词必须与其中一个字段匹配。

例如,假设我查询“holiday party food”,我希望它返回标题中至少包含 1 个术语的所有文档,其余在 html_source 中。

如果文档有:

title: Holiday, html_source: party food => MATCH
title: Party, html_source: food holiday => MATCH
title: Food, html_source: holiday party => MATCH
title: RANDOM TITLE, html_source: holiday party food => NO MATCH.

这是我到目前为止所构建的,它匹配在 html_source 中包含所有术语但不在标题中的文档,这不是我想要的。

{
   "query":{
      "query_string":{
         "query":"holiday party food",
         "default_operator":"AND",
         "fields":[
            "title","html_source"
         ]
      }
   },
   "sort":[
      {
         "total_shares":"desc"
      }
   ]
}

【问题讨论】:

  • 你的分析仪是什么?

标签: lucene elasticsearch


【解决方案1】:

这是我认为你想要的查询语法版本:

+(
  (+title:holiday +(body:party   body:food  -body:holiday))
  (+title:party   +(body:holiday body:food  -body:party)
  (+title:food    +(body:holiday body:party -body:food))
)

如果这不起作用,我认为它为您指明了正确的方向。这种查询的技巧是显式枚举所有选项。

【讨论】:

    猜你喜欢
    • 2022-12-10
    • 2017-12-29
    • 1970-01-01
    • 2022-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多