gpt4 book ai didi

elasticsearch - 使用ElasticSearch映射文档时出现问题

转载 作者:行者123 更新时间:2023-12-03 00:28:03 25 4
gpt4 key购买 nike

我有一个文档,希望将其存储在ElasticSearch中并能够针对其运行查询,但是我认为文档结构的格式可能不正确,因此我将无法进行有效的查询。

该文档正试图变得通用,因此具有一组重复的结构。

例如:

  description : [
{ type : "port", value : 1234 }.
{ type : "ipaddress", value : "192.168.0.1" },
{ type : "path", value : "/app/index.jsp app/hello.jsp" },
{ type : "upsince", value : "2014-01-01 12:00:00" },
{ type : "location", value : "-40, 70" }
]

注意:我已经简化了示例,因为在真实文档中,重复结构具有大约7个字段,其中3个字段将明确标识“类型”。

从上面的示例中,我看不到如何编写映射,因为“值”可以是:
  • 整数
  • IP地址
  • 只需要用空格标记的字段
  • 日期时间
  • GEO点

  • 我能看到的唯一解决方案是,该文档需要转换为另一种格式,该格式更易于通过ElasticSearch进行映射?

    最佳答案

    这种情况在这里有所描述:http://www.found.no/foundation/beginner-troubleshooting/#keyvalue-woes

    同一字段中不能有不同类型的值。您可以做的是拥有不同的字段,例如location_valuetimestamp_value等。

    这是一个可运行的示例:https://www.found.no/play/gist/ad90fb9e5210d4aba0ee

    #!/bin/bash

    export ELASTICSEARCH_ENDPOINT="http://localhost:9200"

    # Create indexes

    curl -XPUT "$ELASTICSEARCH_ENDPOINT/play" -d '{
    "mappings": {
    "type": {
    "properties": {
    "description": {
    "type": "nested",
    "properties": {
    "integer_value": {
    "type": "integer"
    },
    "type": {
    "type": "string",
    "index": "not_analyzed"
    },
    "timestamp_value": {
    "type": "date"
    }
    }
    }
    }
    }
    }
    }'

    # Index documents
    curl -XPOST "$ELASTICSEARCH_ENDPOINT/_bulk?refresh=true" -d '
    {"index":{"_index":"play","_type":"type"}}
    {"description":[{"type":"port","integer_value":1234},{"type":"upsince","timestamp_value":"2014-01-01T12:00:00"}]}
    '

    关于elasticsearch - 使用ElasticSearch映射文档时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21864635/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com