首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
herozzm
V2EX  ›  Elasticsearch

es 的 match_phrase 如何排除不需要的结果,发现用 must_not 无法实现结果

  •  
  •   herozzm · 97 天前 · 1523 次点击
    这是一个创建于 97 天前的主题,其中的信息可能已经有所发展或是发生改变。

    es 中有两条数据, 字段 item

    1. 编制服务
    2. 工厂制服

    想通过“match_phrase”搜索“制服”得到第 2 条数据,排除第 1 条数据,以下语句却能得到 2 条数据,请问怎么写才能达到目的?

    {
      "query": {
        "bool": {
          "filter": {
            "bool": {
              "should": [
                {
                  "match_phrase": {
                    "item": {
                      "query": "制服"
                    }
                  }
                }
              ]
            }
          },
          "must_not": [
            {
              "match_phrase": {
                "item": {
                  "query": "制服务"
                }
              }
            }
          ]
        }
      }
    
    第 1 条附言  ·  97 天前
    是 item 字段弄成了最细分词导致的,换成最粗的 ik 分词就好了
    8 回复  |  直到 2019-10-22 11:40:25 +08:00
    Memento
        1
    Memento   97 天前
    应该可以添加中文分词字段, 然后查询该字段;
    yuikns
        2
    yuikns   97 天前
    should 和 must_not 同层
    herozzm
        3
    herozzm   97 天前
    @yuikns 也不行
    ```
    {
    "query": {
    "bool": {
    "should": [
    {
    "match_phrase": {
    "item": {
    "query": "制服"
    }
    }
    }
    ],
    "must_not": [
    {
    "match_phrase": {
    "item": {
    "query": "制服务"
    }
    }
    }
    ]
    }
    }
    }
    herozzm
        4
    herozzm   97 天前
    @Memento 分过词了,这里要精准匹配,所以用了 match_phrase
    airfling
        5
    airfling   97 天前
    should 换成 must,should 不是强制匹配
    herozzm
        6
    herozzm   97 天前
    @airfling 这里是要用多个词语 or 查询的,所以用 should,不过换成 must 也是一样的效果
    airfling
        7
    airfling   97 天前
    那你有没有试过这个 missing 的查询
    herozzm
        8
    herozzm   97 天前
    @airfling 是 item 字段分词颗粒度导致的,弄成 ik 的最粗分词就没问题了
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2218 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 24ms · UTC 07:04 · PVG 15:04 · LAX 23:04 · JFK 02:04
    ♥ Do have faith in what you're doing.