elasticsearch 使用外部属性作为文档id返回属性的名称作为文档id
每当我尝试使用文档中的某些属性分配文档\u id时,它都会在ElasticSearch上创建一个新文档,文档\u id作为我尝试使用的属性的名称。我想要的是检索到的文档的实际数量,文档id设置为源数据库的主键
elasticsearch 使用外部属性作为文档id返回属性的名称作为文档id,
elasticsearch,logstash,
elasticsearch,Logstash,每当我尝试使用文档中的某些属性分配文档\u id时,它都会在ElasticSearch上创建一个新文档,文档\u id作为我尝试使用的属性的名称。我想要的是检索到的文档的实际数量,文档id设置为源数据库的主键 output { elasticsearch { hosts => ["placeholder"] index => "item" document_id => "%{i.RecordId}" doc_as_upsert => true user => "pl
output {
elasticsearch {
hosts => ["placeholder"]
index => "item"
document_id => "%{i.RecordId}"
doc_as_upsert => true
user => "placeholder"
password => "placeholder"
}
}
具体来说,创建一个新文档,如下所示:
"_index" : "item",
"_type" : "_doc",
"_id" : "%{i.RecordId}",
"_score" : 1.0,
"_source" : {
我尝试了几种不同的方法,比如将recordid复制到元数据字段中,但到目前为止没有任何效果
提前感谢您的帮助您可以使用元数据字段,如以下文档所述: 您必须在输出中指定如下内容:
output {
elasticsearch {
hosts => ["placeholder"]
index => "item"
document_id => "%{[@metadata][id]}"
doc_as_upsert => true
user => "placeholder"
password => "placeholder"
}
}
您应该在筛选器中指定id的值,如:
mutate {
add_field => { "[@metadata][id]" => <your_id_var> }
}
我也遇到了同样的问题,它仍然只添加了一个具有如下文档id的文档;{{u index:item,{u type:{u doc,{u id:%[@metadata][[u id]],{u分数:1.0,将其更改回也没有帮助,仍然只创建了一个id为%[@metadata][id]%的文档。最后似乎有一个%的文档。它应该只是过滤器中的[@metadata][id]和%{[@metadata][id]}然而,在有帮助的输出中,无论我如何格式化字段使用,它最终只是设置id,例如,作为_id:recordid,是否有一种特殊的方式来格式化它?recordid是从grok filter获得的字段吗?您使用的是哪个版本的logstash?共享文档字段的示例。字段i.recordid是否存在?它是名为i.R的字段吗ecordId或名为i的json对象,带有名为RecordId的嵌套字段,如{i:{RecordId:value}?根据您的日志存储版本,访问字段的方式不同。它是MSSQL中表中的字段。必须进行一些连接以获取所需的字段-当我不尝试通过conf文件分配文档id时,所有内容都会正确映射。我使用7.6.0版
fingerprint {
method => "SHA512" ` source => <YOUR SOURCE>
target => "[@metadata][fingerprint]"
}
document_id => "%{[@metadata][fingerprint]}"
input {
jdbc {
jdbc_connection_string => "jdbc:sqlserver://placeholedr"
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
jdbc_driver_library => "C:\Users\Bruger\Documents\JBDC\sqljdbc_4.2\enu\jre8\sqljdbc42.jar"
jdbc_user => "sa"
jdbc_password => "placeholder"
statement => "SELECT
i.RecordId,
i.FK_Catalog,
i.FK_Unit,
c.Name,
i.ItemNumber,
i.Ean,
i.ItemNumber2,
i.Description,
i.AltDescription,
i.IsStandard,
i.MarkedForDelete,
i.DateCreated,
i.DateUpdated,
i.ItemNumberNumerical,
i.ItemAlias,
i.FK_CatalogItemGroup,
f.UnitName,
i.NetPrice,
i.GrossPrice,
i.SellingPrice,
i.IsSellingPriceCalculated,
i.PriceMatrixItemId,
i.DiscountPercent,
i.DiscountAmount,
i.IsActive,
i.ItemOnStock,
i.AllowanceCharge,
w.Name as WholesalerName,
w.WholesalerID,
wp.Priority
from Item as i
JOIN Catalog as c on c.RecordId = i.FK_Catalog
join Wholesalers w on w.WholesalerID = c.FK_Wholesaler
join WholesalerPriority wp on wp.fk_wholesaler = w.WholesalerID
JOIN Units f on f.UnitsID = i.FK_Unit
"
}
}
filter
{
mutate
{
add_field => {"[@metadata][id]" => "[recdordid]" }
}
}
output {
elasticsearch {
hosts => [placeholder]
index => "oegaard"
doc_as_upsert => true
document_id => "%{[@metadata][id]}"
user => "placeholedr"
password => "placeholder"
}
}