簡體   English   中英

elasticsearch-js庫中的多字段搜索

[英]Multi-field search in the elasticsearch-js library

我正在將Elasticsearch (來自searchly的托管實例)與elasticsearch -js npm客戶端庫一起使用。 我想從一個詞中搜索索引中的多個字段。 似乎有大量的文檔 ,例如

GET /_search
{
  "query": {
    "bool": {
      "should": [
        { "match": { "title":  "War and Peace" }},
        { "match": { "author": "Leo Tolstoy"   }}
      ]
    }
  }
}

在這里我可以為作者和標題設置相同的值。 但是,這是一個get請求,其結構與我在其中執行的nodejs庫不同:

this._client.search({
  index: 'sample',
  body: {
    query: {
      match: {
        name: 'toFind'
      }
    }
  }
}).then(function (resp) {
  var hits = resp.hits.hits;
}, function (err) {
  console.trace(err.message);
});

我不能有多個match:否則,字段tsc會抱怨嚴格模式,如果我嘗試類似的操作:

    query: {
      match: {
        name: 'toFind',
        description: 'toFind'
      }
    }

然后我得到一個錯誤:

“ type”:“ query_parsing_exception”,

“ reason”:“ [match]查詢以簡化的形式解析,具有直接的字段名稱,但除了字段名稱之外,還包含更多選項,可能使用帶有\\ u0027query \\ u0027元素的\\ u0027options \\ u0027形式?

由於要在多個字段上匹配相同的字符串,因此需要多次匹配查詢。 試試這個

this._client.search({
  index: 'sample',
  body: {
    query: {
      multi_match: {
        query: 'toFind',
        fields: ['name','description']
      }
    }
  }
}).then(function (resp) {
  var hits = resp.hits.hits;
}, function (err) {
  console.trace(err.message);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM