gpt4 book ai didi

elasticsearch - 搜寻对象并比较某些元素的Elasticsearch查询

转载 作者:行者123 更新时间:2023-12-03 01:39:13 24 4
gpt4 key购买 nike

我刚开始使用Elasticsearch。我有这种文件:

{
arr: {
"01": "one phrase",
"02": "another",
"03": 900
},
field1: "val1",
field2: "val2"
}

arr字段的第二个元素以“ano”开头且第三字段的范围为800-1000的范围内查找所有文档的查询应该是什么?

如果效率太低,我目前可以自由地将此“模式”更改为其他内容。

我已经阅读了有关嵌套对象的内容,但在此阶段还无法理解是否必须显式命令Elasticsearch索引 arr字段内部。如果有的话,我将不胜感激带有类似“如果存在”的create index命令的示例,因为应用程序每次启动时都会尝试创建此索引。

谢谢!

最佳答案

您可以通过访问此网址来检索映射

http://localhost:9200/YOUR_INDEX_NAME_HERE/_mapping

如果您在插入条目之前未指定映射,那么elasticsearch会通过为您创建映射来处理它。在这里查看更多
https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html

我希望它是这样的
{
"my_index": {
"mappings": {
"doc": {
"properties": {
"arr": {
"properties": {
"01": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"02": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"03": {
"type": "long"
}
}
},
"field1": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"field2": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}

这是查询,如果我对您的映射的假设是正确的
{
"query": {
"bool": {
"must": [
{
"wildcard": {
"arr.02": {
"value": "ano*"
}
}
},
{
"range": {
"arr.03": {
"gte": 800,
"lte": 1000
}
}
}
]
}
}
}

警告,范围查询是包含性的,即 800<=x<=1000。如果您希望它排他,则表示 800<x<1000,然后将查询分别更改为 gtlt

关于elasticsearch - 搜寻对象并比较某些元素的Elasticsearch查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49414339/

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