日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

09.span query 查询

發布時間:2024/2/28 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 09.span query 查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. 簡介
    • 2. 樣例
      • 1. span_term query
      • 2. span_near query
      • 3. span_not query
      • 4. span_or query
      • 5. span_first query
      • 6. span_within query
      • 7. span_containing query
      • 8. field_masking_span query
      • 9. span_multi query

1. 簡介

這里介紹的是es對lucene的spanQuery的一些使用接口,主要有下面的幾種查詢

  • span_term query: 和term查詢等效,一般用來在其他span query中作為組合查詢
  • span_near query: 和intervals查詢中的match 查詢很像,約束多個查詢term的order和gap
  • span_not query: 和boost query很像,但是包含的是 include和excludes兩個條件(boost query 是positive和negative)
  • span_or query: 結合多個span query ,和bool 查詢中的should很像,只要命中一個即可
  • span_first query: 要查詢的term在對應的field中的位置距離起始位置不能超過N
  • span_within query: 這個挺特殊,是分為little和big兩個span query, 而且little的query中的term必須在big的多個term之間(在source field中對應的text當中)
  • span_containing query: 這個感覺和span_within一樣,就是查詢順序不一樣,先查little再過濾big條件
  • field_masking_span query: 可以讓span-near or span-or across different fields,具體使用沒有看太明白
  • span_multi query: Wraps a term, range, prefix, wildcard, regexp, or fuzzy query.
  • 2. 樣例

    原始數據

    GET multi_test/_search返回 {"hits" : {"total" : {"value" : 6,"relation" : "eq"},"max_score" : 1.0,"hits" : [{"_source" : {"shingle" : "If the calculations based on the specification determine that","title" : "If the calculations based on the specification determine that","age" : 80,"status" : true}},{"_source" : {"shingle" : "my favorite food hot water","title" : "my favorite food hot water","age" : 23,"status" : true}},{"_source" : {"shingle" : "that no optional clauses are needed, the usual rules about BooleanQueries ","title" : "that no optional clauses are needed, the usual rules about BooleanQueries ","age" : 39,"status" : false}},{"_source" : {"shingle" : "rules about BooleanQueries still apply at search ","title" : "rules about BooleanQueries still apply at search ","age" : 42,"status" : false}},{"_source" : {"shingle" : "If the calculations based","title" : " suggester requires special mapping up ","age" : 38,"status" : false}},{"_source" : {"shingle" : "my favorite food is pisa","title" : "the my favorite that is pisa","age" : 35,"status" : false}}]} }

    1. span_term query

    GET multi_test/_search {"query": {"span_term": {"title": {"value": "that"}}} }

    2. span_near query

    GET multi_test/_search {"query": {"span_near": {"clauses": [{"span_term": {"title": {"value": "up"}}},{"span_term": {"title": {"value": "suggester"}}}],"slop": 3,"in_order": false}} }

    3. span_not query

    GET multi_test/_search {"query": {"span_not": {"include": {"span_term": {"title": {"value": "favorite"}}},"exclude": {"span_near": {"clauses": [{"span_term": {"title": {"value": "my"}}},{"span_term": {"title": {"value": "favorite"}}}],"slop": 0,"in_order": false}}}} }

    我在測試的時候,如果exclude當中使用span term的話那么會出現exclude失效的情況,具體原因不太清楚

    4. span_or query

    GET multi_test/_search {"query": {"span_or": {"clauses": [{"span_term": {"title": {"value": "food"}}},{"span_term": {"title": {"value": "favorite"}}}]}} }

    5. span_first query

    GET multi_test/_search {"query": {"span_first": {"match": {"span_term": {"title": "hot"}},"end": 4}} }返回"_source" : {"shingle" : "my favorite food hot water","title" : "my favorite food hot water","age" : 23,"status" : true}

    6. span_within query

    GET multi_test/_search {"query": {"span_within": {"little": {"span_term": {"title": {"value": "special"}}},"big": {"span_near": {"clauses": [{"span_term": {"title": {"value": "suggester"}}},{"span_term": {"title": {"value": "mapping"}}}],"slop": 5,"in_order": false}}}} }返回 "_source" : {"shingle" : "If the calculations based","title" : " suggester requires special mapping up ","age" : 38,"status" : false}

    這里的litte中的term special在源文檔中必須在big查詢的兩個term suggester, mapping中間才行,否則查不出來

    7. span_containing query

    GET multi_test/_search {"query": {"span_containing": {"little": {"span_term": {"title": {"value": "special"}}},"big": {"span_near": {"clauses": [{"span_term": {"title": {"value": "suggesterzh"}}},{"span_term": {"title": {"value": "mapping"}}}],"slop": 5,"in_order": false}}}} }

    要求同span within 查詢

    8. field_masking_span query

    這個沒有用明白。。。

    GET multi_test02/_search {"query": {"span_near": {"clauses": [{"span_term": {"title": "requires"}},{"field_masking_span": {"query": {"span_term": {"shingle": "based"}},"field": "title"}}],"slop": 1,"in_order": false}} }

    9. span_multi query

    GET multi_test/_search {"query": {"span_multi": {"match": {"prefix": {"title": {"value": "sug"}}}}} }返回"_source" : {"shingle" : "If the calculations based","title" : " suggester requires special mapping up ","age" : 38,"status" : false}

    總結

    以上是生活随笔為你收集整理的09.span query 查询的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。