• 请不要在回答技术问题时复制粘贴 AI 生成的内容
audestick
V2EX  ›  程序员

Elasticsearch 怎么实现在搜索结果中排除某个词?类似于 Google 的减号指令

  •  
  •   audestick ·
    audeSt · Sep 18, 2016 · 6473 views
    This topic created in 3558 days ago, the information mentioned may be changed or developed.
      2 、减号
    
      减号(-)表示搜索结果不包含减号后面词的页面。使用这个指令时减号前面必须是空格,减号后面没有空格,紧跟着要排除的词,谷歌和百度都支持这个词。
    
      例如:搜索 “苹果 –电影”,返回结果页面就排除了《苹果》这部电影的结果,而不影响苹果手机电脑和苹果作为水果的内容。
    
    12 replies    2016-09-18 11:40:08 +08:00
    audestick
        1
    audestick  
    OP
       Sep 18, 2016
    audestick
        2
    audestick  
    OP
       Sep 18, 2016
    audestick
        3
    audestick  
    OP
       Sep 18, 2016
    audestick
        4
    audestick  
    OP
       Sep 18, 2016
    求助!先提前谢谢三位同学了~
    oaix
        6
    oaix  
       Sep 18, 2016
    {query: {bool: { must_not: {term: {name: "apple"}} }} }
    audestick
        7
    audestick  
    OP
       Sep 18, 2016
    @xguox cool!我得好好看下文档了看来...
    xguox
        8
    xguox  
       Sep 18, 2016
    @oaix 这是精确匹配吧? 不是 "apple" 才命中, "an apple" 都不会命中 这个查询
    xguox
        9
    xguox  
       Sep 18, 2016
    说错, 应该 "an apple" 之类的可以命中.
    oaix
        10
    oaix  
       Sep 18, 2016
    @xguox 嗯,不应该用 term ,使用 match ,比如楼主需要搜索 apple ,但排除 film ,可以这样搜{query: {bool: { must: { match: "apple"}, must_not: {match: "film"}}}
    Suclogger
        11
    Suclogger  
       Sep 18, 2016
    恩, bool query 是正解
    audestick
        12
    audestick  
    OP
       Sep 18, 2016
    @xguox @oaix @oaix
    是的,我把问题想复杂了.

    两者都可以.

    一个是 query string
    一个是 match query

    都可以.

    只不过 query string 更简洁一点

    谢了各位~
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1167 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 17:48 · PVG 01:48 · LAX 10:48 · JFK 13:48
    ♥ Do have faith in what you're doing.