有没有办法从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) 我想搜索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"在第一次打击时获得一些东西.
我使用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的.