1

私はelastic4s 1.5.10を使用しており、elasticsarch RESTエンドポイントで準備したクエリを構築しようとしています. 今、elastic4s DSL に書き直そうとしています。

POST /index_name/type/_search
{
    "_source":{"include":["name","surname"]},
   "query": {
      "bool": {
         "must": [
            {
               "more_like_this": {
                  "fields": ["desc"],
                  "ids": ["472825948"],
                  "min_term_freq":0,
                  "max_query_terms":200
               }
            },
            {
               "match": {"city": "London"}
            }, 
            {
               "match": {"operation": "add"}
            }
         ]
      }
   }
}

このクエリの目的は、同じ都市 (ロンドン) で同じ操作 (追加) を行う 472825948 に類似したアイテムを取得することです。

Elastic4sでの私の試みは次のとおりです。

es_client.execute{
      search in  s"$storage_folder/${typ.name()}" query bool(    
        must(
          morelike id adId in s"$storage_folder/${typ.name()}" fields("desc") minTermFreq(0) maxQueryTerms(200),
          matchQuery(field="city",value = "London"),
          matchQuery(field="operation",value = "add"))
      )sourceInclude("name","surname")
    }
  }

この文脈では「より似ている」は機能しません。生のjsonのクエリが意味をなさないか、elastic4sがこれをサポートしていないか...

誰か助けてくれませんか?

どうも

4

1 に答える 1

2

完全を期すために、ここでも応答を追加しました。 morelikee はリクエスト タイプをmorelikeThisQuery表し、クエリの正しい形式です。したがって、結果のクエリは次のようになります。

es_client.execute{
      search in  s"$storage_folder/${typ.name()}" query bool(    
        must(
          morelikeThisQuery fields("desc")  ids(adId) minTermFreq(0) maxQueryTerms(200),
          matchQuery(field="city",value = "London"),
          matchQuery(field="operation",value = "add"))
      )sourceInclude("name","surname")
    }
  }
于 2015-06-02T07:26:57.073 に答える