标签: elastic4s

如何使用scala客户端开始使用Elastic Search

嗨,我是Elastic Search的新手,我想在scala中使用它,所以我在github上找到了一些代码示例,但是有一个非常复杂的例子给我一个初学者我花了一整天时间试图理解这个教程但是在最后我很困惑如何开始这个,它与其他Scala客户端示例相同,非常复杂

  1. https://github.com/scalastuff/esclient
  2. https://github.com/bsadeh/scalastic
  3. https://github.com/gphat/wabisabi我也试过这个,但它包含错误,我也在这里发布了/sf/ask/1900151081/的分派,未来

对于像我这样的新学习者来说,所有这些例子都非常复杂,因为我从它的指南中阅读弹性搜索的第一章然后我想用Scala进行语法编写这些相同的事情.请给我一些起点,从哪里开始学习并且还有一个请求不要将此问题标记为非建设性我先尝试自己然后我发布此问题,请我需要帮助我想学习弹性搜索使用scala

scala elasticsearch elastic4s

9
推荐指数
2
解决办法
1万
查看次数

使用Elastic4s进行动态ElasticSearch映射

我有一个文档,我想在elasticSearch上编制索引,这个文档包含一些我事先无法知道的动态密钥,例如下面的例子中的"spanish"或"french"

"contents": {
    "title": {
        "spanish": "Hola amigos",
        "french" : "Bonjour les amis"
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用elastic4s DSL来制作我的映射(通过createIndex DSL),但我无法找到如何使用此库创建基于"匹配"选项的动态映射(如此处所示),为了存储在路径contents.title下的每种语言,指定不同的分析器.

好吗?:-)

scala elasticsearch elastic4s

5
推荐指数
1
解决办法
2043
查看次数

elastic4s:使用rawQuery得分保持在1

我们在ElasticSearch 2.2.0中使用了elastic4s.许多查询作为JSON存储在磁盘上,并通过elastic4s驱动程序用作rawQuery.结果中的分数在通过命令行提交的查询或elastic4s驱动程序之间不同.elastic4s驱动程序始终为所有结果返回得分1,而命令行执行产生两个不同的得分(针对不同的数据类型).

elastic4s的代码:

   val searchResult = client.execute {
      search in indexName types(product, company, orga, "User", "Workplace") rawQuery preparedQuery sourceInclude(preparedSourceField:_*) sort {sortDefintions:_*} start start limit limit 
    }.await
Run Code Online (Sandbox Code Playgroud)

请注意,我删除了任何内容,但rawQuery preparedQuery没有更改分数1.通过命令行的完整查询很长:

{
    "query": {
        "bool": {
            "must": [
                {
                    "multi_match": {
                        "query": "${search}",
                        "fields": [
                            "name",
                            "abbreviation",
                            "articleNumberManufacturer",
                            "productLine",
                            "productTitle^10",
                            "productSubtitle",
                            "productDescription",
                            "manufacturerRef.name",
                            "props"
                        ]
                    }
                }
            ],
            "filter": [
                {
                    "or": [
                        {
                            "bool": {
                                "must": [
                                    {
                                        "type": {
                                            "value": "Product"
                                        }
                                    },
                                    {
                                        "term": …
Run Code Online (Sandbox Code Playgroud)

scala elasticsearch elastic4s

5
推荐指数
1
解决办法
440
查看次数

IOException[当前标记 (START_OBJECT) 不是数字,不能使用数字值访问器

在 Elasticsearch 中出现以下错误。

RemoteTransportException[[CN8keD-][127.0.0.1:9300][indices:data/write/update]]; 嵌套:RemoteTransportException[[CN8keD-][127.0.0.1:9300] 索引:数据/写入/更新[s]]];嵌套:MapperParsingException IOException[当前标记(START_OBJECT)不是数字,不能使用数字值访问器。

如何解决此错误?

elastic4s elasticsearch-5

5
推荐指数
1
解决办法
1383
查看次数

如何通过elastic4s客户端将json请求发送到Elasticsearch?

假设我使用这样的代码:

ElasticClient client = ...
client.execute{search in "places"->"cities" query "paris" start 5 limit 10}
Run Code Online (Sandbox Code Playgroud)

如何查看已向Elasticsearch发送了哪些json请求?

json scala http elasticsearch elastic4s

4
推荐指数
1
解决办法
1784
查看次数

scala中花括号和括号之间的真正区别

使用Scala一段时间后,阅读所有地方,特别是在这里

我确定我知道何时使用curlies.作为一个经验法则,如果我想传递一个代码块来执行,我将使用花括号.

怎么这个令人讨厌的bug使用花括号使用elastic4s DSL浮出水面:

bool {
  should {
    matchQuery("title", title)
  }
  must {
    termQuery("tags", category)
  }
}
Run Code Online (Sandbox Code Playgroud)

编译为:

{
  "bool" : {
    "must" : {
      "term" : {
        "tags" : "tech"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

使用括号时:

bool {
       should (
         matchQuery("title", title)
        ) must (
         termQuery("tags", category)
        )
      }
Run Code Online (Sandbox Code Playgroud)

给出正确的结果:

{
  "bool" : {
    "must" : {
      "term" : {
        "tags" : "tech"
      }
    },
    "should" : {
      "match" : {
        "title" : {
          "query" : "fake",
          "type" : …
Run Code Online (Sandbox Code Playgroud)

scala elastic4s

3
推荐指数
1
解决办法
252
查看次数

org.elasticsearch.client.transport.NoNodeAvailableException:没有配置的节点可用:[]

我正在运行,ElasticSearchDocker本地可用

$ curl http://192.168.99.100:9200/?pretty
{
  "status" : 200,
  "name" : "Collector",
  "cluster_name" : "elasticsearch",
  "version" : {
    "number" : "1.4.4",
    "build_hash" : "c88f77ffc81301dfa9dfd81ca2232f09588bd512",
    "build_timestamp" : "2015-02-19T13:05:36Z",
    "build_snapshot" : false,
    "lucene_version" : "4.10.3"
  },
  "tagline" : "You Know, for Search"
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Elastic4s进行连接ElasticSearch,我尝试了以下方法,但所有这些都给了我错误

val client = ElasticClient.remote(host = "192.168.99.100", port = 9200)
Run Code Online (Sandbox Code Playgroud)

val settings = ImmutableSettings.settingsBuilder().put("cluster.name", "elasticsearch").build()
  val uri = ElasticsearchClientUri("elasticsearch://192.168.99.100:9200")
  val client = ElasticClient.remote(uri)
Run Code Online (Sandbox Code Playgroud)

错误是

Exception in thread "main" org.elasticsearch.client.transport.NoNodeAvailableException: None of …
Run Code Online (Sandbox Code Playgroud)

java scala elasticsearch docker elastic4s

3
推荐指数
1
解决办法
1万
查看次数

弹性体和游戏框架2.2.1

我试图通过使用elastic4s API和播放框架将一些数据索引到弹性搜索

我基本上是从控制器调用这个方法

 def test(){
 val client = ElasticClient.local
 client.execute { create index "bands" }
 client execute { index into "bands/singers" fields "name"->"chris martin" }
 client.close()

 }
Run Code Online (Sandbox Code Playgroud)

我没有在播放或弹性搜索日志中收到任何错误,

然后我检查了Sense插件,如果数据被索引,我得到了

  {
   "error": "IndexMissingException[[bands] missing]",
  "status": 404
   }
Run Code Online (Sandbox Code Playgroud)

看起来查询没有去服务器?...

scala elasticsearch playframework-2.0 elastic4s

2
推荐指数
1
解决办法
1044
查看次数

使用elastic4s动态构建弹性请求

我想用elastic4s构建一个动态查询.

我有一个名为myRequest的请求对象,有两个文件(fieldA和fieldB)

实际上我构建我的查询是这样的:

val req =
      search in indexName -> indexType query {
        bool {
          should(
            matchQuery("fieldA", myRequest.fieldA.getOrElse("")),
            matchQuery("fieldB", myRequest.fieldA.getOrElse("")),

          )
        }
      }
Run Code Online (Sandbox Code Playgroud)

但我想要的是:当fieldA为空时,我的查询中不会添加matchQuery

谢谢你的帮助

hbellahc.

scala elasticsearch elastic4s

1
推荐指数
1
解决办法
452
查看次数