亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么elasticsearch matchQuery不返回結果?

為什么elasticsearch matchQuery不返回結果?

12345678_0001 2024-01-28 20:23:39
我已成功使用 Elasticsearch 對內容建立了索引,但在嘗試查詢內容時遇到了麻煩。我想要做的是搜索所有包含值“ ipsum ”(在任何術語中)并且術語“type”應等于“cq:Page”的文檔。我正在使用高級 Rest Java 客戶端。嘗試使用過濾和 Boolquery 但它返回零結果。例子:SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();sourceBuilder.from(0);sourceBuilder.size(10);SearchRequest searchRequest = new SearchRequest();searchRequest.indices("gettingstarted");searchRequest.source(sourceBuilder);BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();                boolQueryBuilder.must(QueryBuilders.queryStringQuery("ipsum"));boolQueryBuilder.must(QueryBuilders.matchQuery("type", "cq:Page"));sourceBuilder.query(boolQueryBuilder);SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);也嘗試過此操作,但沒有成功,它返回零結果。boolQueryBuilder.must(QueryBuilders.matchQuery("type", NT_PAGE));
查看完整描述

2 回答

?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

也許是這樣的:


GET index/_search

{

  "query": {

    "bool": {

      "must": [

        {

          "multi_match": {

            "query": "ipsum",

            "fields": []

          }

        },

        {

          "match": {

            "type": "cq:Page"

          }

        }

      ]

    }

  }

}


"fields": [] -> meaning all fields


查看完整回答
反對 回復 2024-01-28
?
烙印99

TA貢獻1829條經驗 獲得超13個贊

它使用matchPhraseQuery而不是 matchQuery 來工作。我的值是“cp:Page”。

在這種情況下,僅當該術語的值與其索引中的值完全相同時,matchQuery 才會返回文檔(并且在查詢時沒有使用分析器)。

另一方面,matchPhraseQuery 也會在查詢時使用默認分析器,因此查詢中的值在分析器更改后將與索引值相同。

可以按查詢、按字段或按索引指定分析器。在索引時,Elasticsearch 將按以下順序查找分析器:

字段映射中定義的分析器。索引設置中名為 default 的分析器。標準分析儀。在查詢時,還有幾個層:

全文查詢中定義的分析器。 search_analyzer 定義在字段映射中。字段映射中定義的分析器。索引設置中名為default_search的分析器。索引設置中名為 default 的分析器。標準分析儀。


查看完整回答
反對 回復 2024-01-28
  • 2 回答
  • 0 關注
  • 353 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號