Py学习  »  Elasticsearch

通过ElasticSearch对包含地理点和日语字符的4个条件进行排序

Minh Loc • 4 年前 • 178 次点击  

我有一些商店的文件,如下所示。如何查询:

  1. 商店粉丝数量降序
  2. 商店商品数量降序
  3. 从当前位置顺序关闭
  4. 日语字母顺序

索引数据

curl -XPUT "localhost:9200/shops/doc/1" -H 'Content-Type: application/json' -d'  
{
 "id": 1,
 "name": "中村 裕美子",
 "furigana_name": "木村 稔",
 "number_fans": 4,
 "number_articles": 1,
 "group_name": "有限会社 伊藤",
 "location": {
     "lat": 35.1284,
     "lon": 137.1446
     }
 }

curl -XPUT "localhost:9200/shops/doc/2" -H 'Content-Type: application/json' -d'  
{
 "id": 2,
 "name": "山田 明美",
 "furigana_name": "木村 稔",
 "number_fans": 3,
 "number_articles": 2,
 "group_name": "有限会社 佐藤",
 "location": {
     "lat": 35.1177,
     "lon": 137.1915
     }
 }

curl -XPUT "localhost:9200/shops/doc/3" -H 'Content-Type: application/json' -d'  
{
 "id": 3,
 "name": "松本 晃",
 "furigana_name": "松本 裕美子",
 "number_fans": 3,
 "number_articles": 3,
 "group_name": "株式会社 青山",
 "location": {
     "lat": 35.1098,
     "lon": 137.4242
     }
 }

这是我的查询,但它缺少筛选日语字母字符顺序,不确定其他字符的顺序是否正确。

curl -XPOST "localhost:9200/shops/_search" -H 'Content-Type: application/json' -d'  
{
"query": {
    "match_all" : {}
},
"sort": [
    { "number_fans": { "order": "desc" } },
    { "number_articles": { "order": "desc" } },
    { "_geo_distance" : {
            "location": {
                "lat": 35.13914,
                "lon": 137.18779
            },
            "order" : "desc",
            "unit" : "km"
        }
    }
],
"size": 200
}

提前感谢!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/37966
 
178 次点击  
文章 [ 1 ]  |  最新文章 4 年前
akky
Reply   •   1 楼
akky    5 年前

对于4,您需要按汉字名称列排序,该列应该有日语字母、平假名或片假名。

您的示例数据似乎不正确,因为汉字注音名称有另一个人的汉字名称。例如,第一张唱片的名字“_”应该有汉字“_