V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
hellogbk
V2EX  ›  程序员

ES 初学者,有一个关于 term 的疑问求解答

  •  
  •   hellogbk · 2016-05-04 16:54:47 +08:00 · 2937 次点击
    这是一个创建于 3160 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我看教程说 term 会进行精确匹配。 现在有一个请求如下:

    {
        "query": {
            "term": {
               "agent": {
                  "value": "chrome"
               }
            }
        }
    }
    

    agent 这个文档属性是 analyzed 的,那么请问这个时候这个到底是精确匹配还是全文匹配?我想问的主要问题是, term 是不是只有在应用到 not_analyzed 的字段上的时候才会进行精确匹配?否则的话就跟 match 一样的是全文匹配?

    谢谢回答!

    5 条回复    2020-06-02 19:24:31 +08:00
    JerryKwan
        1
    JerryKwan  
       2016-05-04 17:07:11 +08:00
    默认情况下 Analyzed 的好像就无法精确匹配了。对于这类既需要精确匹配又需要全文搜索的,建议使用 Multi-fields 。
    建议多看看官方文档,实际动手试试。
    CunZhangCao
        2
    CunZhangCao  
       2016-05-04 17:22:06 +08:00
    term 查询直接匹配的是词元,不走分词过程; match 查询的时候是走分词过程的。
    dqh3000
        3
    dqh3000  
       2016-05-04 17:22:40 +08:00
    要精确匹配可以 not_analyzed + wildcard
    不 not_analyzed 的应该都分析了
    davidyanxw
        4
    davidyanxw  
       2020-06-02 19:13:30 +08:00
    analyzed 设置时:对应分词; doc 会分词处理,query 也会分词处理;
    term 对应词项,term 是分词生成的,当然不分词的话就是自身。
    -----------------------------
    analyzed:
    三个 doc:
    google chrome
    google Chrome
    googlechrome

    term query: chrome 命中:文档 1 、2 (文档 2,分词处理后变成了 google chrome )
    term query: Chrome 命中: 文档 1 、2 ( query,分词处理后变成了 chrome )

    ====================
    unanalyzed:
    同样的文档
    term query: chrome 命中: 没有
    term query: Chrome 命中: 没有
    term query: google chrome 命中:文档 1 (没有分词过程了)


    结论:
    term query,字面意思就是词项查询
    是否分词,影响的是 doc 和 query 生成的 term ;进一步 term query 时候,和原始的字符串未必一致。
    davidyanxw
        5
    davidyanxw  
       2020-06-02 19:24:31 +08:00
    @davidyanxw
    勘误:
    term query 不会分词,doc 会分词( analyzed 时)

    analyzed:
    term query: chrome 命中:文档 1 、2
    term query: Chrome 命中:没有(找不到 term=Chrome 的文档)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2615 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 07:55 · PVG 15:55 · LAX 23:55 · JFK 02:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.