【问题标题】:ElasticSearch with AND condition带有 AND 条件的 ElasticSearch
【发布时间】:2017-10-04 04:59:00
【问题描述】:

我正在尝试使用 Elastic Search 实现搜索,但遇到了一些问题:

我有什么

我正在尝试实现 ElasticSearch 我有 2 个字段:

1) 搜索词(文本字段)

2) 城市名称(文本字段)

现在我想要的是,如果用户输入两个值,那么它必须同时搜索(AND 条件),否则如果用户输入搜索词,那么它只搜索搜索词,或者如果城市则只搜索城市。

我在做什么

"bool" : {
"should": [
    { 
    "multi_match": {
        "query":   '"'+keyword.toLowerCase()+'"',
        "fields": 
        [ 
            "title", "desc" 
        ]
    }
    }, 
    { 
    "match": 
    { 
        "city": city.toLowerCase() 
    }
    }  
],

}

但它不起作用,它正在使用 OR 进行搜索。

非常感谢任何帮助。

提前致谢

兰德尔

【问题讨论】:

标签: elasticsearch elasticsearch-5


【解决方案1】:

如果您希望所有条件都匹配,您可以使用“必须”而不是“应该”。

【讨论】:

  • 如果我使用 must 它不会仅适用于城市,我希望如果用户输入城市,那么它也仅适用于城市
  • 如果您的意思是“匹配”查询是必须的问题,您可以根据需要将其替换为术语或通配符查询。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多