小编dch*_*har的帖子

Elasticsearch索引的最后更新时间

有没有办法从ElasticSearch信息中检索上次更新特定索引的时间?我的目标是能够告诉最后一次在索引中插入/更新/删除任何文档的时间.如果这是不可能的,我可以在索引修改请求中添加一些内容,以便稍后提供此信息吗?

elasticsearch

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

Elasticsearch搜索在具有特殊字符和通配符的字段中失败

我在Elasticsearch中有一个字段,其值为"PEI.H.02354.01.".当我用querystringas 搜索时

{  
   "query":{  
      "query_string":{  
         "query":"field:PEI.H.02354.01.",
         "default_operator":"AND"
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

然后返回一个结果,这是正确的行为.但是,如果我使用通配符搜索,则不会返回任何结果,例如

{  
   "query":{  
      "query_string":{  
         "query":"field:PEI.H.02354.01.*",
         "default_operator":"AND"
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

该字段是字符串类型并进行分析.下面是创建索引的代码,包括分析器和映射.

{
   "settings":{  
      "analysis":{  
         "analyzer":{  
            "number":{  
               "type":"custom",
               "tokenizer":"keyword",
               "filter":[  
                  "lowercase"
               ],
               "char_filter":[  
                  "number_filter"
               ]
            },
            "diacritical":{  
               "type":"custom",
               "tokenizer":"standard",
               "filter":[  
                  "standard",
                  "lowercase",
                  "asciifolding",
                  "nfd_normalizer"
               ]
            }
         },
         "filter":{  
            "nfd_normalizer":{  
               "type":"icu_normalizer",
               "name":"nfc"
            }
         },
         "char_filter":{  
            "number_filter":{  
               "type":"pattern_replace",
               "pattern":"[^\\d]+",
               "replacement":""
            }
         }
      }
   },
   "mappings":{  
      "testType":{  
         "_source":{  
            "enabled":false
         },
         "_all":{  
            "enabled":false
         },
         "_timestamp":{  
            "enabled":"true",
            "store":"yes"
         },
         "properties":{  
            "field":{  
               "store":"yes",
               "type":"string",
               "index":"analyzed",
               "analyzer":"diacritical" …
Run Code Online (Sandbox Code Playgroud)

wildcard elasticsearch

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

ElasticSearch即使其值为null也会获取所有字段

我想搜索ElasticSearch并从所有记录中检索特定字段,无论它们的值如何.但响应仅包含每个记录的值为非的字段.有没有办法强制ElasticSearch为所有记录返回完全相同数量的字段?

示例请求:

{
    "fields" : ["Field1","Field2","Field3"],
    "query" : {
        "match_all" : {}
    }
}
Run Code Online (Sandbox Code Playgroud)

响应示例:

{
    "hits": [
        {
            "fields": {
                "Field1": [
                    "bla"
                ],
                "Field2": [
                    "test"
                ]
            }
        },
        {
            "fields": {
                "Field1": [
                    "bla"
                ],
                "Field2": [
                    "test"
                ],
                "Field3": [
                    "somevalue"
                ]
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我的目标是"Field3"在第一次打击时获得一些东西.

elasticsearch

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

如何使用Java中的结构化流来从Kafka反序列化记录?

我使用Spark 2.1.

我试图使用Spark Structured Streaming从Kafka读取记录,反序列化它们并在之后应用聚合.

我有以下代码:

SparkSession spark = SparkSession
        .builder()
        .appName("Statistics")
        .getOrCreate();

Dataset<Row> df = spark
        .readStream()
        .format("kafka")
        .option("kafka.bootstrap.servers", kafkaUri)
        .option("subscribe", "Statistics")
        .option("startingOffsets", "earliest")
        .load();

df.selectExpr("CAST(value AS STRING)")
Run Code Online (Sandbox Code Playgroud)

我想要的是将value字段反序列化为我的对象而不是像String.

我有一个自定义反序列化器.

public StatisticsRecord deserialize(String s, byte[] bytes)
Run Code Online (Sandbox Code Playgroud)

我怎么能用Java做到这一点?


我找到的唯一相关链接是这个https://databricks.com/blog/2017/04/26/processing-data-in-apache-kafka-with-structured-streaming-in-apache-spark-2-2 .html,但这是针对Scala的.

java apache-kafka apache-spark spark-structured-streaming

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